高性能网站法则 -- 资源缓存和版本管理
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
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
相关文章推荐
- 高性能网站法则 -- 减少资源文件大小
- 前端资源多个产品整站一键打包&包版本管理(四)—— js&css文件文件打包并生成哈希后缀,自动写入路径、解决资源缓存问题。
- 利用.net的资源文件实现网站的多语言版本
- 高性能WEB开发 - JS、CSS的合并、压缩、缓存管理
- 构建高性能网站的14条法则
- 前端工程精粹(一):静态资源版本更新与缓存(附精简js的工具)
- 高性能网站架构设计之缓存---redis集群搭建
- Web全栈工程师的自我修养-笔记-高性能网站的关键:缓存
- 96. Spring Boot之静态资源版本映射(解决js/css缓存问题)
- 通过webDAV来管理网站上的资源 推荐
- 游戏中的资源管理--资源高速缓存
- 架构高性能网站秘笈(三)——浏览器缓存
- Rails的静态资源管理(六)—— Asset Pipeline缓存存储方式、预处理、升级等
- 构建高性能网站的14条法则:把script放到页面的下端
- 优化网站设计(三):对资源添加缓存控制
- 通过web方式来管理网站的资源
- 架构高性能网站秘笈(四)——反向代理缓存
- 前端工程精粹(一):静态资源版本更新与缓存
- 架构高性能网站秘笈(二)——动态内容缓存
- Linux高性能集群 - 资源管理和系统管理