博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
web优化-添加Expires头以及压缩组件
阅读量:5880 次
发布时间:2019-06-19

本文共 1068 字,大约阅读时间需要 3 分钟。

  因为Expires头使用一个特定的时间,它要求服务器和客户端的时钟严格同步。过期日期需要经常检查,一旦这一天到来了,还需要在服务器配置中提供一个新的日期。cache-Control使用max-age指令制定组件被缓存多久。它已秒为单位定义了一个更新窗。如果从组件被请求开始过去的秒数少于max-age,浏览器就使用缓存版本,这就避免了额外的Http请求。

  为了确保用户能获取组件的最新版本,需要在所有HTML页面中修改组件的文件名。“最有效的解决方案是修改其所有链接,这样,全新的请求将从原始服务器下载最新的内容。”一种简单的解决方案就是为所有组件的文件名使用变量。

  web客户端可以通过http请求与中accept-Encoding头来标识对压缩的支持。

Accept-Encoding:gzip,deflateContent-Encoding:gzip

  图片和PDF不应压缩,因为它们本来就以及被压缩了。试图对他们压缩只会浪费CPU资源,还有可能会增加文件大小。配置gzip时使用的模块取决于Apache版本。apche1.3使用mod_gzip而apche 2.x使用mod_deflate。mod_gzeip提供了选项,可以将保存压缩过的内容自动保存在磁盘上,并在原内容发生变化时更新压缩过的内容。使用mod_gzip_can_negotiate和mod_gzip_update_static指令可以完成这个任务。

  当用户使用代理访问网站时,情况会变得复杂。假设到达代理得一个请求来自于一个不支持gzip的浏览器,因此其缓存为空。代理会将请求转发到web服务器。此时服务器的响应是未经过压缩的。这个没有压缩的响应被代理缓存起来并发送给浏览器。假设第二个请求同一个URL但是来自于一个支持gzip的浏览器。代理会将其缓存未压缩的内容进行响应,这个就失去的压缩的机会。假如顺序与例子相反,情况可能更严重。解决问题的方法是在web服务器的响应中添加Vary头。web服务器可以告诉代理根据一个或多个请求头来改变缓存的响应。犹豫压缩的决定是基于Accept-Encoding请求头的,因此需要在服务器的Vary响应头中包含Accept-Encoding。默认情况下,mod_gzip会向所有响应添加Vary:Accept-Encoding的头,以驱使代理执行正确的操作。

  

 

  以上内容摘抄于《高性能网站建设指南》

转载于:https://www.cnblogs.com/wlxll/p/5953394.html

你可能感兴趣的文章
音视频开发平台
查看>>
windows 2008 ip 安全策略
查看>>
快速部署OpenShift应用
查看>>
fstab gpt screen
查看>>
如何给Apache Pig自定义UDF函数?
查看>>
IDE、SATA、SCSI、SAS、FC、SSD 硬盘类型
查看>>
HTML模块通信
查看>>
mysql登陆启动报错 ERROR 2002 (HY000) 解决方法
查看>>
LINUX小实验
查看>>
Linux服务器---流量监控webalizer
查看>>
常见Mysql系统参数调整
查看>>
我的友情链接
查看>>
2012年度十大杰出IT博客之 罗升阳
查看>>
慧眼识人?做“博”乐?投票贡献拿大奖!
查看>>
python学习笔记一 介绍、基本语法、流程控制
查看>>
【翻译】Ext JS最新技巧——2016-3-4
查看>>
socket收发超时
查看>>
我的友情链接
查看>>
AHCI和IDE的区别,如何在AHCI模式下安装系统
查看>>
实测 Mysql UUID 性能
查看>>