您的位置:首页 > 运维架构 > 网站架构

高性能网站法则 -- 资源缓存和版本管理

2010-01-03 23:45 176 查看
资源缓存(Cache)是一个非常重要的提高网站性能的方法,它可以让再次访问的用户不用下载已经缓存的资源文件,从而减少从服务器下载的开销提高访问速度。

1)配置缓存

对于Apache服务器来说,设置缓存配置也是非常方便的。可以使用mod_expires模块,添加如下配置:

<FilesMatch "/.(gif|jpg|js|css)$">

ExpiresDefault "access plus 1 year"

</FilesMatch>

这个表明所有的后缀为gif, jpg, js 和css文件都设置缓存一年。

验证缓存设置是否成功只需要看HTTP响应头里面是否包含expires或者Cache-Control: max-age。

2)缓存时间

设置缓存时间可能需要根据不用网站,对于内容更新比较频繁的网站,可以缓存时间可以设置较短。对于内容比较固定的网站,则可以设置较长的缓存时间,例如十年。

3)资源更新

利用缓存设置可以让浏览器知道这个文件到什么时候过期,例如我们设置缓存时间是1年,那么在用户第一次访问一个页面下载资源文件,这些资源文件就会被浏览器缓存起来。在1年内,用户访问同样的页面如果要下载同样的资源文件,那么浏览器就会从缓存中读取而不需要再从服务器下载。

缓存会带来一个问题,那就是如果服务器端文件更新,如何能够让浏览器能够下载到更新的文件呢?

方法一:在url加版本信息,例如xxx.js?ver=1.2,这是一种非常简单的方法,但有些proxy不能缓存有参数的url。

方法二:改变文件名,例如xxx_hashkey.js。由于文件名的改变,自然会导致原来的url改变,所以浏览器是会重新下载更新的资源文件。

4)版本管理

改变文件名是推荐的方法,那么如何实现?

a) 可以使用ant脚本,每次在build过程中根据Hash Key来改变文件名,并且将在页面中引用的地方也修改对应的文件名

b) 通过apache rewrite模块来实现url重定向,详细可以参考这篇Automatically
Version Your CSS and JavaScript
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: