微信号:grzlwx

介绍:光荣之路官方资讯

Web缓存大作战:Web服务器端需注意的

2015-07-15 23:22 光荣之路



  1. 什么是Web缓存,为什么要使用它?

  2. 缓存的类型:

    1. 浏览器缓存;

    2. 代理服务器缓存;

    3. 网关缓存;

  3. Web缓存无害吗?为什么要鼓励缓存?

  4. Web缓存如何工作

  5. 如何控制缓存和不缓存:

    1. HTML Meta标签 vs. HTTP头信息;

    2. Pragma HTTP头信息(以及为什么不起作用);

    3. 使用Expires HTTP头信息控制不过期;

    4. Cache-Control(缓存控制)HTTP头信息;

    5. 验证器和验证;

  6. 创建支持缓存网站的小技巧;

  7. 编写支持缓存的脚本;

  8. 常见问题解答;

  9. 实现需注意的:Web服务器端;

  10. 实现需注意的:服务端脚本;

  11. 参考文档和拓展阅读;

  12. 关于本文档;

实现需注意的:Web服务器端

一般说来,应该选择最新版本的Web服务器程序来部署。不仅因为它们包含更多利于缓存的功能,新版本往往在性能和安全性方面都有很多的改善。

Apache HTTP服务器
Apache使用可选模块包含头信息,头信息ExpiresCache-Control一并包含。这些模块在1.2版本以上都支持。

这些模块需要编译到Apache中,虽然包含,但是默认并未开启。为了确定相应模块已经被启用,找到httpd程序,运行httpd -l, 它会列出可用的模块(注意,仅有内部编译的模块列表才会显示,在较新版本的Apache中,使用httpd -M可以包含动态加载的模块N),我们需要关注的是expires模块(expires_module)和headers模块(headers_module)。

⑬httpd:httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。

  • 如果这些模块不可用,你需要联系管理员,重新编译以包含这些模块。这些模块可以通过取消配置文件中的注释掉启用,或者在编译的时候增加-enable -module=expires-enable-module=headers参数(apache 1.3+). 参开Apache中的INSTALL文件。

一旦你的Apache有了相应的模块,你可以使用mod_expires指定过期的时间,要么在.htaccess文件,要么在服务器的access.conf文件。你可以设置过期时间是从访问时间开始还是文件修改时间开始,并应用到特定类型文件上或设为默认配置。查看官方该模块文档获得更多信息,或者遇到问题的时候向你身边的apache专家讨教。

为应用Cache-Control头,你需要使用mod_headers模块,其允许你为资源指定任意的头信息。可参考mod_headers官方文档。

下面是.htaccess文件展示了如何使用头信息:

  • .htaccess文件允许Web发布者使用配置文件中的指定。可以影响目录以及子目录内容。和你的服务器管理员沟通下,看看它们是否可用。

    ### activate mod_expires ExpiresActive On ### Expire .gif's 1 month from when they're accessed ExpiresByType image/gif A2592000 ### Expire everything else 1 day from when it's last modified ### (this uses the Alternative syntax) ExpiresDefault "modification plus 1 day" ### Apply a Cache-Control header to index.html <Files index.html> Header append Cache-Control "public, must-revalidate" </Files>

  • 注意,在有些情况下,mod_expires会自动计算并插入Cache-Control:max-age头信息。

Apache 2’s的配置和1.3类似,更多信息可以参考2.2N的mod_expires和mod_headers文档。

微软IIS
微软的IIS有一些灵活的方式可以很容易得设置头信息,不过似乎只针对IIS 4.0服务器,并且只能在NT服务器上运行。

为了给网站某区域指定头信息,需要进入Administration(管理员)工具面板,然后再设置属性。选择HTTP Headers选项卡后,你会看到两个有意思的区域:Enable Content ExpirationCustom HTTP headers, 第一个含义一目了然,第二个用来应用Cache-Control头。//zxx: 此处的操作描述很过时了,看看window7下,操作界面早就大变样了!

设置ASP页面(Active Server Pages)的头信息可以参考后面的ASP章节,也可以通过ISAPI模块设置头信息,细节请参考MSDN。

Netscape/iPlanet企业服务器
3.6版本以后,企业版服务器已经不能以任何方式设置Expires头信息了。然而,其从3.0版本开始支持HTTP 1.1的功能。这意味着HTTP 1.1的缓存(代理服务器/浏览器)利用你对Cache-Control的设置来获得。

为了使用Cache-Control头,在管理员服务器中选择Content Management | Cache Control Directives(内容管理|缓存控制指令)。然后,使用资源选择器(Resource Picker),选择你希望设置头信息的目录。设置完头信息后,点击”确定”。更多信息请参考NES手册。

(未完待续)

(原文来源:http://www.mnot.net/cache_docs/

译者:张鑫旭 译文来源:http://www.zhangxinxu.com/wordpress/?p=3338

一字一句当思来之不易,感谢作者,传播测试知识、技能与正能量!

光荣之路软件测试培训

官网:http://www.gloryroad.cn/

微信公众号:gloryroadtrain

性能测试QQ群:415987441
软件测试招聘QQ群: 203715128
自动化3群QQ: 371211499



 
光荣之路 更多文章 今天晚上的 linux 公开课- Awk 编程 7月28日(今天)晚上的 linux 公开课- shell编程 8月4日(今天)晚上的 linux 公开课- shell编程 9月1日(本周一)晚8点半,光荣之路Web自动化系列基础课—javascript第二讲 推荐本好书《与机器赛跑》
猜您喜欢 Xcode6.4注册URL Scheme步骤详解 尚学堂合作企业专场招聘 别让精致的应用,变成令人胆颤的噩梦 React-Native 分包实践 『独家干货 』Android应用函数级性能分析方案