【问题标题】:htaccess for Leverage browser caching not working用于利用浏览器缓存的 htaccess 不起作用
【发布时间】:2013-01-21 15:04:26
【问题描述】:

我在使用浏览器缓存时遇到问题。 我已经创建了这个 .htaccess 文件并在我的服务器上使用它,但它似乎不起作用,我从这里“http://www.samaxes.com/2011/05/improving-web-performance-with-apache-and-htaccess/”复制了它。 我很可能犯了一个基本错误,所以任何帮助都会很好。 这里有一些细节。我正在开发一个子域,我们将其称为“子”,将主域称为“示例”。 所以我希望 http://sub.example.com/ 中的所有内容都可以处理 htaccess 文件。 在我的服务器上,我将 .htaccess 文件放在子目录的主目录中,例如与主目录分开。

我正在运行一个同时启用了 mod_headers 和 mod_expires 的 apache2 服务器。

干杯。

<ifModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/xml text/css text/plain
AddOutputFilterByType DEFLATE image/svg+xml application/xhtml+xml application/xml
AddOutputFilterByType DEFLATE application/rdf+xml application/rss+xml application/atom+xml
AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript application/json
AddOutputFilterByType DEFLATE application/x-font-ttf application/x-font-otf
AddOutputFilterByType DEFLATE font/truetype font/opentype
</ifModule>
<ifModule mod_expires.c>
 ExpiresActive On
 ExpiresDefault "access plus 5 seconds"
 ExpiresByType image/x-icon "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"
 ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
 ExpiresByType text/css "access plus 604800 seconds"
 ExpiresByType text/javascript "access plus 216000 seconds"
 ExpiresByType application/javascript "access plus 216000 seconds"
 ExpiresByType application/x-javascript "access plus 216000 seconds"
 ExpiresByType text/html "access plus 600 seconds"
 ExpiresByType application/xhtml+xml "access plus 600 seconds"
 </ifModule>
 <filesMatch "\\.(ico|pdf|flv|jpg|jpeg|png|gif|swf|mp3|mp4)$">
 Header set Cache-Control "max-age=2592000, private"
 Header set Expires "Sun, 17 July 2013 20:00:00 GMT"
 </filesMatch>
 <filesMatch "\\.(css|css.gz)$">
 Header set Cache-Control "max-age=604800, private" 
 </filesMatch>
 <filesMatch "\\.(js|js.gz)$">
 Header set Cache-Control "max-age=604800, private"
 </filesMatch>
 <filesMatch "\\.(xml|txt)$">
 Header set Cache-Control "max-age=216000, private, must-revalidate"
 </filesMatch>
 <filesMatch "\\.(html|htm)$">
 Header set Cache-Control "max-age=7200, private, must-revalidate"
 </filesMatch>
 FileETag None

【问题讨论】:

  • 你试过a2enmod expires然后service apache2 restart

标签: .htaccess http caching http-headers browser-cache


【解决方案1】:

看起来很乱。

你也有多余的规则,比如

ExpiresByType application/javascript "access plus 216000 seconds"

<filesMatch "\\.(js|js.gz)$">
Header set Cache-Control "max-age=604800, private"
</filesMatch>

尝试使用html5-boilerplate 中的更简洁(并且是最新的)规则,或者查看所有 h5bp server configs

【讨论】:

    【解决方案2】:

    只用这个试试看:

        <ifModule mod_expires.c>
     ExpiresActive On
     ExpiresDefault "access plus 5 seconds"
     ExpiresByType image/x-icon "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"
     ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
     ExpiresByType text/css "access plus 604800 seconds"
     ExpiresByType text/javascript "access plus 216000 seconds"
     ExpiresByType application/javascript "access plus 216000 seconds"
     ExpiresByType application/x-javascript "access plus 216000 seconds"
     ExpiresByType text/html "access plus 600 seconds"
     ExpiresByType application/xhtml+xml "access plus 600 seconds"
     </ifModule>
    

    就像@Anthony Hatzopoulos 指出的那样,您正在使用重复的配置,它们可能会发生冲突。当然,如果您愿意,也可以使用“fileMatch”方式,但问题是它们不是很好的代码。请注意,如果您使用“fileMatch”,那么您不使用该代码。

    【讨论】:

      猜你喜欢
      • 2014-12-24
      • 2017-01-20
      • 2016-09-18
      • 2014-11-03
      • 2016-01-13
      • 2017-01-09
      • 2016-08-13
      相关资源
      最近更新 更多