如何在.htaccess中为PNG文件指定缓存验证程序?

时间:2013-06-10 21:26:35

标签: .htaccess caching last-modified

我想在网站上将所有图片和视频缓存至少一个月,以加快加载过程。

http://gtmetrix.com速度报告给出了以下错误:

  

以下资源缺少缓存验证程序。资源那   不指定缓存验证程序无法有效刷新。   指定Last-Modified或ETag标头以启用缓存验证   以下资源:

     

//目前在我的页面上显示的所有* .png文件//

到期时间:

### CACHING ###
<IfModule mod_expires.c>
  ExpiresActive on
  ExpiresDefault "access plus 1 month"
# cache.appcache needs re-requests in FF 3.6 (thx Remy ~Introducing HTML5)
  ExpiresByType text/cache-manifest "access plus 0 seconds"
  ExpiresByType text/html "access plus 0 seconds"
  ExpiresByType text/xml "access plus 0 seconds"
  ExpiresByType application/xml "access plus 0 seconds"
  ExpiresByType application/json "access plus 0 seconds"
  ExpiresByType application/rss+xml "access plus 1 hour"
# media: favicon, images, video, audio
  ExpiresByType image/x-icon "access plus 1 month"
  ExpiresByType image/gif "access plus 1 month"
  ExpiresByType image/png "access plus 1 month"
  ExpiresByType image/jpg "access plus 1 month"
  ExpiresByType image/jpeg "access plus 1 month"
  ExpiresByType video/ogg "access plus 1 month"
  ExpiresByType audio/ogg "access plus 1 month"
  ExpiresByType video/mp4 "access plus 1 month"
  ExpiresByType video/webm "access plus 1 month"
# htc files  (css3pie)
  ExpiresByType text/x-component "access plus 1 month"
# webfonts
  ExpiresByType font/truetype "access plus 1 month"
  ExpiresByType font/opentype "access plus 1 month"
  ExpiresByType application/x-font-woff "access plus 1 month"
  ExpiresByType image/svg+xml "access plus 1 month"
  ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
# css and javascript
  ExpiresByType text/css "access plus 1 week"
  ExpiresByType application/javascript "access plus 1 week"
  ExpiresByType text/javascript "access plus 1 week"

缓存控制:

  <IfModule mod_headers.c>
    <FilesMatch "\.(ico|pdf|flv|jpe?g|png|gif|swf|ogg)$">
      Header set Cache-Control "max-age=2592000, public"
      Header unset Last-Modified
      Header unset ETag
      FileETag None
    </FilesMatch>
    <FilesMatch "\.(css)$">
      Header set Cache-Control "max-age=604800, public"
    </FilesMatch>
    <FilesMatch "\.(js)$">
      Header set Cache-Control "max-age=604800, private"
    </FilesMatch>
    <FilesMatch "\.(xml|txt)$">
      Header set Cache-Control "max-age=216000, public, must-revalidate"
    </FilesMatch>
    <FilesMatch "\.(x?html?|php)$">
      Header set Cache-Control "max-age=1, private, must-revalidate"
    </FilesMatch>
    <FilesMatch "\.(eot|font.css|otf|ttc|ttf|woff)$">
        Header set Access-Control-Allow-Origin "*"
    </FilesMatch>
  </IfModule>
</IfModule>
### / CACHING ###

我该怎么做才能解决它?

BTW我发现这个:htaccess 'Header unset Last-Modified' caching issue但看起来这个家伙没有图像问题

1 个答案:

答案 0 :(得分:0)

鉴于此警告:

  

指定上次修改 ETag 标头以启用缓存   验证以下资源

我怀疑你的配置中的这些行是罪魁祸首:

  

标头未设置上次修改

     

标题未设置 ETag

     

FileETag

您的配置正在删除用于缓存验证的标头信息。