php - Apache / Laravel 不缓存 jpg,但缓存了其他扩展
问题描述
我使用此代码在我的 .htaccess 文件中缓存 jpg 和其他图像类型,
虽然只是laravel中存储文件夹中未缓存的文件。存储中的文件也已使用uniSharp 文件管理器保存
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "max-age=3024000, public"
</FilesMatch>
所有图像类型都已缓存,但 jpg 不缓存
我也使用过这段代码:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 day"
ExpiresByType image/jpg "access plus 5 days"
ExpiresByType image/jpeg "access plus 5 days"
ExpiresByType image/gif "access plus 5 days"
ExpiresByType image/png "access plus 5 days"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType text/x-javascript "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 year"
</IfModule>
但这也不起作用
所有需要的模块都在 httpd.conf 中处于活动状态,例如
LoadModule expires_module modules/mod_expires.so
LoadModule file_cache_module modules/mod_file_cache.so
LoadModule cache_module modules/mod_cache.so
LoadModule cache_disk_module modules/mod_cache_disk.so
而且我在设置后也重新启动了 apache 服务器。
我在 Windows Server 2016 上使用了 wamp 服务器
解决方案
我将 .htaccess 文件更改为此代码,现在缓存工作正常:
<IfModule mod_deflate.c>
<FilesMatch "\.(html|php|txt|xml|js|css)$">
SetOutputFilter DEFLATE
</FilesMatch>
</IfModule>
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "max-age=604800, public "
</FilesMatch>
# BEGIN Expire headers
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 7200 seconds"
ExpiresByType image/jpg "access plus 2592000 seconds"
ExpiresByType image/jpeg "access plus 2592000 seconds"
ExpiresByType image/png "access plus 2592000 seconds"
ExpiresByType image/gif "access plus 2592000 seconds"
AddType image/x-icon .ico
ExpiresByType image/ico "access plus 2592000 seconds"
ExpiresByType image/icon "access plus 2592000 seconds"
ExpiresByType image/x-icon "access plus 2592000 seconds"
ExpiresByType text/css "access plus 2592000 seconds"
ExpiresByType text/javascript "access plus 2592000 seconds"
ExpiresByType text/html "access plus 7200 seconds"
ExpiresByType application/xhtml+xml "access plus 7200 seconds"
ExpiresByType application/javascript A259200
ExpiresByType application/x-javascript "access plus 2592000 seconds"
ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
</IfModule>
# END Expire headers
# BEGIN Cache-Control Headers
<IfModule mod_headers.c>
<FilesMatch "\.(ico|jpe?g|png|gif|swf|css|gz)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>
<FilesMatch "\.(js)$">
Header set Cache-Control "max-age=2592000, private"
</FilesMatch>
<filesMatch "\.(html|htm)$">
Header set Cache-Control "max-age=7200, public"
</filesMatch>
# Disable caching for scripts and other dynamic files
<FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>
</IfModule>
# END Cache-Control Headers
推荐阅读
- linux - 根据指令文件重命名目录中的文件
- linux - Spansion s25hx512 闪存驱动程序
- r - 在 R 中使用 Sys.setenv()
- reactjs - Can't access Content-Disposition in axios
- angular11 - 我如何以角度为以下方法编写单元测试用例
- android - 如何获取android消息应用程序的包名?
- php - Laravel 8 storage/framework/cache/data/ee 文件夹将用户设置为 root:root 而不是 apache:apache 权限被拒绝
- web-applications - 具有大量页面的现代 Web 应用程序的架构
- bash - Bash:如何执行路径
- spring-boot - Spring Boot Webclient:如何从 ClientResponse 访问响应状态原因短语