不少与网站性能优化相关的帖子,大多只讲了应该怎么作,应该怎么设置,没有太多讲这些设置的相关解释及案例。此文重点介绍网站缓存cache-control,即哪些页面,哪些资源应该作网站缓存?并用京东的cache-control设置为案例作参考。php
http响应头信息与搜索引擎蜘蛛,网站速度有着密切关系。经过设置相关头信息能够提升搜索引擎蜘蛛及用户的访问速度,提高网站有效内容的抓取量.下面重点介绍cache-controlcss
cache-control是用于控制网页的缓存.常见的取值有private、no-cache、max-age、must- revalidate等,默认为private。
cache-control有哪些属性?html
其做用根据不一样的从新浏览方式分为如下几种状况:
cache-control浏览器
打开新窗口(_blank)缓存
private、no-cache、must-revalidate 再次访问服务器
Cache-control: max-age=5(表示当访问此网页后的5秒内再次访问不 会去服务器)性能优化
在地址栏回车
值为private或must-revalidate则只有第一次访问时会访问服务器,之后就再也不访问。
值为no-cache,那么每次都会访问。
值为max-age,则在过时以前不会重复访问。服务器
按后退按扭
值为private、must-revalidate、max-age,则不会重访问,
值为no-cache,则每次都重复访问post
按刷新按扭
不管为什么值,都会重复访问
性能
cache-control在哪里设置优化
在IIS的网站属性中的http头信息选项卡中,勾选启用内容过时后有三个相关选项.
1、当即过时
启用此选项后,每次请求都会向服务器申请下载最新版本。浏览器不作缓存处理。状态返回码200。Cache信息是:no-cache。这种方式能够保证客户端看到的永远是最新版本,也就是说若是服务器端进行了更新,必定能被客户端看到。
2、此时段后过时与过时时间
这两种状况下,浏览器缓存将其做用。注意,第一次的状态是200,同时cache-control为30天(对应的秒数)。就是说这个网页会有30天的缓存。因此,然后的状态都会是304.
cache-control应该怎么设置更好?
对于图片,css,等长期不变化的内容应该设置较长的过时时间(如180天)
建议:
1.对于js和css能够独立到一个二级域名中,启用GZIP,且设置较长的过时时间
2.对于图片独立到另外一个二级域名中,且设置较长的过时时间
对于静态文件(html)若是长期不更新也能够设置稍长的过时时间(如30天),须要根据当前网站的实际而定。
对于动态文件(php)能够设置较短的过时时间(如120秒)
注意:在过时时间内,若是您对文件内容进行了变化,对于用户或蜘蛛都不能浏览或抓取到你更改后的内容。 这也是动态文件设置较短过时时间的主要缘由。cache-control的设置只是为了节约搜索引擎蜘蛛资源,让其抓取更多有效内容,千万不能弄巧成拙。
cache-control设置案例(京东)
京东的html文件大可能是产品及分类页面,设置的过时时间较短
css文件不是太长,可能因为是大网站,页面变化频率更快。对于不常常变化的css彻底能够设置更长的过时时间
动态文件,这是京东的新闻内容,因为是新闻的缘由,可能不常更新,因此反而设置的过时时间比静态文件长
图片文件设置了很长的过时时间,若是没算错应该是120天。
有兴趣的能够仔细研究,京东的大多类型不同的页面的过时时间都是不一样的。