使用mod_expires进行高级缓存

最快(最便宜)的数据传输是不必执行的操作-因为数据已经存在。 还是在那里-文件缓存已广为人知并得到实践。 每个Web浏览器都在缓存他以前从Web服务器请求的文件。 但是,如果要第二次加载该文件,仍然会向Web服务器发送一个请求,该服务器通常会以“ 304未修改” [1]进行答复,如他的访问日志所示:

215.82.12.78 - - [02/Nov/2007:10:20:33 +0100] "GET /images/logo.gif HTTP/1.1" 304 -
收到此消息后,最终浏览器将从其缓存中加载文件。 而不是传输文件,仅通过电缆传输了几个字节。 但是,如果页面使用大量的缓存文件(例如gif图像和javascript文件),那么即使是304个请求也要汇总-特别是在具有高延迟的连接上。

为了摆脱这种不必要的负担,Apache Web服务器提供了mod_expires [2]模块,该模块使您可以在每个传递的文件上加上“有效至”标记。 因此,根据HTTP / 1.1规范([3],第14.21小节),将以下内容添加到http响应标头中:

Expires: Thu, 01 Mar 2007 09:30:00 GMT
这将导致浏览器不会再次询问该文档或文件,除非他从缓存中删除了该文档或文件。 现在,让我们仔细看看mod_expires的指令及其产生的可能性。 这是一个例子:
ExpiresActive  On
ExpiresDefault "access plus 5 minutes"
ExpiresByType  image/gif  "access plus 2 days"
ExpiresByType  text/html  "modification plus 5 minutes"
ExpiresActive用于启用或禁用(打开/关闭)http响应标头的修改。 ExpiresDefault给出所有文档的默认值,这些文档不能单独由规则捕获。 此处的有效期限为自访问时间起五分钟。 这样可以确保客户端不会每隔几秒钟重新加载文档,而另一方面,如果在服务器上进行了文档更改,他将在合理的时间内获得更新的版本。

ExpiresByType使您可以根据mime类型控制到期时间。 在示例中,从下载之日起的24小时内,不会从服务器重新加载gif图像-基于这样的假设:gif图像没有改变,而是将被具有新名称的新文件替换。 如果您的网站使用带有翻转效果的gif按钮,则会减少许多请求。 另一方面:如果在图像名称保持不变的情况下更改了网页的布局和gif图像,则将导致浏览器的外观看上去很奇怪,而这些浏览器会在不到24小时之前首次访问该页面。 因此,尽管该指令可以大大减少通信量,但也应谨慎处理。

在示例中,如果html页面的内容少于五分钟,则不会重新加载它们。 想象一下一个Web门户的频繁访问首页,它是每五分钟从动态内容中生成一次,但出于性能的考虑而另存为静态html文件。 如果由“访问”替代方法来管理,则仅加载4:59分钟旧页面的客户端将在五分钟内错过新版本。 基于“修改”,可以确保没有人会错过最新消息。

简而言之,将访问规则用于不变的内容(或至少不经常更改)。 如果需要修改,请尝试使用新名称。 将修改规则用于经常被修改的内容,或者由于什么原因而寿命很短的内容。

最后但并非最不重要的一点是,这种方法不仅可以减轻Apache的负担,而且可以加快客户端的Web应用程序的速度:可能会显示每次使用时都不需要询问的图像和JavaScript。仅几秒钟的时间就更快了。 但是最后(至少主观上)全部总结了出来。

----

[1]

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

[2]

http://httpd.apache.org/docs/2.2/mod/mod_expires.html

[3]

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

From: https://bytes.com/topic/apache/insights/740981-advanced-caching-mod_expires

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值