首页 > 解决方案 > 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 服务器

标签: phplaravelapachecachingwamp

解决方案


我将 .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

推荐阅读