谷歌的30条建议让你的Web Site达到高性能 --- 缓存篇

Optimize caching (优化缓存) 篇

Leverage Browser Caching

https://developers.google.com/speed/docs/best-practices/rules_intro


1. 为所有可缓存的静态资源设置HTTP缓存头。使用Expires头或者是Last-Modified头,当然,使用Expires头性能更高,因为使用Last-Modified头,浏览器还需要连接服务器获取最后修改时间。谷歌的建议是,Expires设置为1个月或者更多,最长可以设置为1年,但不能超过1年,因为超过1年违反了HTTP规则。

2. 使用指纹(fingerprinting )来动态地设置缓存。这条建议是和第一条建议相关的,由于设置了Expires头,所以在过期之前浏览器不会从服务器再次获取资源,但是如果你修改了服务器上的某个资源,希望浏览器重新获取它,这个时候怎么办呢?修改URL,使用指纹。比如将css的url设置为82b6bc440914c01297b99b4bca641a5d_common.css,当你修改了这个CSS后,将指纹部分修改掉,这样URL发生了变化,浏览器当然会重新获取该资源。

3. 为了IE浏览器,一定要正确地设置你的Vary Header。Vary Header的用法我在这里就不赘述了,大家自己去Google。这条建议的意思是,不要在Vary头里面设置任何除了Accept-Encoding  User-Agent以外的值,因为如果你设置了其它的值,IE将不会缓存这个资源。

4. 避免FireFox中的URLs Cache冲突问题。Firefox通过URL计算出一个HASH值,然后检查这个HASH值是否已经缓存过,如果已经缓存就不用去服务器获取。但是Firefox的HASH计算函数有个问题:如果两个URL的差异在8个字符以内,它计算出的HASH值是相同的。这样就会导致HASH冲突,最终导致Cache冲突。所以,确保你的URL的差异在8个字符以上。

5. 使用Cache contorl: public头迫使Firefox缓存HTTPS资源。正常情况下,Firefox不会缓存HTTPS资源,所以为了让它缓存HTTPS资源,需要使用Cache control: public头,虽然这个头本来是用于代理服务器的。


Leverage Proxy Caching

使用代理服务器可以很大程度地提高你的Web site的响应速度,而代理服务器的Caching更能提高性能。你可以使用 Cache contorl: public头通知你的代理服务器这个资源是可以被缓存的,下一次,代理服务器就不再从源Web服务器获取该资源,而是直接将已缓存的资源返回给发起请求的客户端。
6. 不要为静态资源使用Query String。如果你使用了Query String,某些Proxy服务器将不会缓存那个资源,即使你使用了Cache control: public头也不会缓存。比如著名的Squid。

7. 小心Proxy在缓存JS或者CSS时的Bug。由于某些Proxy软件有Bug,它们没有注意到Content-Encoding头的存在,所以把错误的缓存资源返回给了客户端,导致客户端不能正常地解压缩资源。为了避免这个问题,最好的解决办法是为这些文件关闭缓存,即设置 Cache contorl: private。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值