利用浏览器缓存

时间:2011-07-29 00:09:44

标签: pagespeed

我想利用浏览器缓存来提高页面速度。听起来像max-age和last-modified是很好的选择,但我不清楚如何确定我应该为它实现哪些文件。一般来说,我对如何实际执行此操作以及代码在我的htaccess中的外观感到困惑。我想我希望得到更明确的帮助或者展示一些例子。或者也许有人可以指导我参加这方面的课程/教程,像我这样的新手可以理解,我没有找到任何运气。任何了解更多关于max-age和last-modified的人的任何帮助都可以帮助告诉我如何做到这一点将不胜感激。我真的迷失了,并会付钱帮助我。感谢。

1 个答案:

答案 0 :(得分:9)

在SO上搜索会返回一些好的信息 - 比如Leverage browser caching - 但无论如何......

来自:http://www.samaxes.com/2011/05/improving-web-performance-with-apache-and-htaccess/

  

首次访问您网页的访问者会发出几个HTTP请求来下载您的所有网站文件,但是使用ExpiresCache-Control标题可以使这些文件可以缓存。这样可以避免在后续页面查看中出现不必要的HTTP请求。

Apache通过mod_expiresmod_headers模块启用了这些标头。

mod_expires模块控制服务器响应中Expires HTTP标头和max-age HTTP标头的Cache-Control指令的设置。

要修改Cache-Control以外的max-age指令,您可以使用mod_headers模块。

mod_headers模块提供了控制和修改HTTP请求和响应头的指令。标题可以合并,替换或删除。

设置Expires标题的规则:

# BEGIN Expire headers
<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>
# END Expire headers

设置Cache-Control标题的规则:

# BEGIN Cache-Control Headers
<ifModule mod_headers.c>
  <filesMatch "\.(ico|jpe?g|png|gif|swf)$">
    Header set Cache-Control "public"
  </filesMatch>
  <filesMatch "\.(css)$">
    Header set Cache-Control "public"
  </filesMatch>
  <filesMatch "\.(js)$">
    Header set Cache-Control "private"
  </filesMatch>
  <filesMatch "\.(x?html?|php)$">
    Header set Cache-Control "private, must-revalidate"
  </filesMatch>
</ifModule>
# END Cache-Control Headers

注意:不需要将max-age指令设置为Cache-Control标头,因为它已由mod_expires模块设置。

must-revalidate表示一旦响应变得陈旧,就必须重新验证;这并不意味着每次都必须进行检查。

此处有更多信息:http://www.mnot.net/cache_docs/
来自Google:http://code.google.com/speed/page-speed/docs/caching.html
雅虎:http://developer.yahoo.com/performance/rules.html#expires