转 -- HTTP Caching 优化网站

news/2024/5/18 19:54:14/文章来源:https://blog.csdn.net/edwzhang/article/details/7216183

原文出处:http://blog.chenlb.com/2009/07/http-caching-optimize-your-site.html

HTTP Caching 用好了,可以极大的减小服务器负载和减少网络带宽。十分有必要深入了解下 http 的 caching 协议。

先来看下请求/响应过程:

http 请求/响应

http 请求/响应

1、用 Last-Modified 头

在第一次请求的响应头返回 Last-Modified 内容,时间格式如:Wed, 22 Jul 2009 07:08:07 GMT。是零时区的 GMT 时间,servlet 中可以用 response.addDateHeader("Last-Modified", date.getTime()); 加入响应头。如图:

last-modified 和 If-Modified-Since

last-modified 和 If-Modified-Since

Last-Modified 与 If-Modified-Since 对应的,前者是响应头,后者是请求头。服务器要处理 If-Modified-Since 请求头与Last-Modified 对比看是否有更新,如果没有更新就返回 304 响应,否则按正常请求处理。如果要在动态内容中使用它们,那就要程序来处理了。

ps:servlet 取 If-Modified-Since 可以用 long last = requst.getDateHeader("If-Modified-Since");

2、用 Etag 头

很多时间可能不能用时间来确定内容是否有更新。那可以用 Etag 头,etag 是以内容计算一个标识。计算的方式可以自己决定,比如可以用 crc32、md5等。

Etag 和 If-None-Match

Etag 和 If-None-Match

Etag 与 If-None-Match 是对应的,前者是响应头,后者是请求头。服务器要判断请求内容计算得到的 etag 是否与请求头 If-None-Match 是否一致,如果一致就表示没有更新,返回304就可,否则按正常请求处理。可以参考:用 HttpServletResponseWrapper 实现 Etag 过滤器

3、用 Expires 头,过期时间

当请求的内容有 Expires 头的时候,浏览器会在这个时间内不去下载这个请求的内容(这个行为对 F5 或 Ctrl+F2 无效,用 IE7,Firefox 3.5 试了,有效的比如:在地址输入后回车)。

expires 过期时间

expires 过期时间

在 servlet 中可以用 response.addDateHeader("Expires", date.getTime()); 添加过期内容。

ps:在 httpwatch 中可以看到 Result 为 (Cached) 状态的。

4、用 max-age 的 Cache-Control 头

max-age 的值表示,多少秒后失效,在失效之前,浏览器不会去下载请求的内容(当然,这个行为对 F5 或 Ctrl+F2 无效)。比如:服务器写 max-age 响应:response.addHeader("Cache-Control", "max-age=10");

ps:如果你还要加一些 Cache-Control 的内容,比如:private,最好不要写两个 addHeader,而是一个 response.addHeader("Cache-Control", "private, max-age=10"); 否则 ie 可能对 max-age 无效,原因它只读第一个 Cache-Control 头。

小结:

Last-Modified 与 Etag 头(即是方式1和2)还是要请求服务器的,只是仅返回 304  头,不返回内容。所以浏览怎么 F5 ,304 都是有效的。但用 Ctrl+F5 是全新请求的(这是浏览器行为,不发送缓存相关的头)。

Expires 头与 max-age 缓存是不需要请求服务器的,直接从本地缓存中取。但 F5 会忽视缓存(所以使用 httpwatch 之类的 http 协议监察工具时,不要 F5 误认为 Expires 和 max-age 是无效的)。

http 协议监察工具:

Firebox:httpfox、live http header

IE:httpwatch、iehttpheader

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_845431.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WordPress快速增加百度收录,加快网站内容抓取

本文已同步到专业技术网站 www.sufaith.com, 该网站专注于前后端开发技术与经验分享, 包含Web开发、Nodejs、Python、Linux、IT资讯等板块. 利用百度站长平台提供的链接自动提交代码, 快速增加百度收录, 加快网站内容抓取。 1.创建名为 “baidu_js_push.php”的文件, 内容如下…

转 火山喷发的负载 机场网站的缓存

原址如下: http://developer.51cto.com/art/201209/357025.htm 火山喷发的负载 机场网站的缓存 【51CTO精选译文】与其他许多人一样,我眼下也滞留在欧洲,等待飞回美国的航班。近期的火山喷发不仅影响了欧洲大陆的航班,还影响了全…

跨境电商自建站后台系统原型rp_跨境电商仓储物流选择哪家好?

跨境电商仓储物流选择哪家好?跨境电商仓储物流,是针对跨境电商企业量身定制的仓储物流派送一体化业务,在电商旺季能防止因货物过度导致的处理效率低、出错率高、无法准时发货的问题。在电商淡季,能有效避免仓库租赁费、人工费、水电费、设备…

利用其他网站的搜索结果_什么使您的网站在搜索结果中排名很高?

什么使您的网站在搜索结果中排名很高?自搜索引擎开始流行并成为主流以来,这个问题已经引起了网站所有者和企业所有者的关注。特别是,使网站在搜索引擎上排名较高的原因是,大多数人都使用搜索引擎来找到答案并找到他们想要的东西。…

php计划任务导出数据,如何建立备份数据和网站文件的计划任务

下面由宝塔面板使用教程栏目给大家介绍如何建立备份数据和网站文件的计划任务,希望对需要的朋友有所帮助!建立备份数据和网站文件的计划任务登录宝塔 Web 面板 >> 点击左侧菜单栏“计划任务”>> 添加计划任务中,任务类型选择“备…

如何快速搭建一个个人网站

相必很多人都有建站的想法,但是感觉要学的东西太多。这里给大家教一个很快捷的方法。但是前提是要掌握一部分linux基本的命令。 下面开始个人网站搭建的教程: 第一步:首先我们需要一个服务器,这里推介腾讯云15天免费使用的腾讯cvm…

有哪些你一打开,就令你惊讶的网站?

作者:李大颖链接:https://www.zhihu.com/question/393259130/answer/1235087230来源:知乎----------------不仅仅让你惊讶,这10个在线生成器,更让你沉迷!适用人群:单身狗、宅男、猛女、祖安社会…

有哪些你一打开,就令你惊讶的网站?第二趴

原文链接:https://www.zhihu.com/question/393259130/answer/1558178696----上一篇文章推荐了几个惊奇的网站(有哪些你一打开,就令你惊讶的网站?),这一篇更加炫酷。----我来推荐6个小众神奇网站&#xff0c…

解读大型网站系统架构的演化

2014-09-26 09:53 李平 LEE的博客 字号:T | T大型网站的架构是根据业务需求不断完善的,根据不同的业务特征会做特定的设计和考虑,本文只是讲述一个常规大型网站会涉及的一些技术和手段。 AD:干货来了,不要等!WOT2015 北…

黑客规避搜索引擎 劫持网站流量

最令站长头疼的事莫过于自己的网站被黑。如果没有合适的安全措施,即便站长再怎么用心,也会失去网站的控制权。黑客入侵网站之后,可以在上面搭载钓鱼页面,传播恶意软件,盗取敏感信息等。在这篇文章中,我们将…

DataForSeo serp api 使用

serp 使用搜索引擎结果页 由于谷歌搜索引擎反爬太厉害。 我给大家推荐一个好用的平台: DataForSeo serp api serp 提供前100 的搜索引擎结果指定关键字,搜索引擎和搜索位置的实时数据。 所有的post 数据均以json 格式发送 平台地址: https://…

Nginx网站使用CDN之后禁止用户真实IP访问的方法

原文地址: https://zhangge.net/5096.html做过面向公网 WEB 运维的苦逼们肯定见识过各种恶意扫描、拉取、注入等图谋不轨行为吧?对于直接对外的 WEB 服务器,我们可以直接通过 iptables 、 Nginx 的 deny 指令或者是程序来 ban 掉这些恶意请求…

魔百和服务器网站,魔百盒网关服务器下发超时

魔百盒网关服务器下发超时 内容精选换一换物联网平台提供海量设备的接入和管理能力,配合华为云其他产品同时使用,帮助快速构筑物联网应用,简化海量设备管理复杂性,节省人工操作,提升管理效率。使用设备接入控制台&…

el表达式 range_「el」JSTL标签库和EL表达式总结 - seo实验室

elJSTL标签库与EL表达式JSTL 是JSP的标准标签库,是一个JSP的标签集合 ,按照类别包括核心标签,格式化标签,JSTL函数,sql标签和XML标签 ,其中前三个用的概率较高。要想使用JSTL标签库我们首先要做的就是引入对…

power linux磁盘修复,虚拟存储 - Linux on POWER:开发概览_Linux教程_Linux公社-Linux系统门户网站...

虚拟存储对于存储和 I/O 来说,Linux 可以利用很多真实的设备和虚拟设备。这种灵活性可以非常经济地设置 Linux 分区。就磁盘来说,Linux 逻辑分区可以支持 3 个不同的存储选项:" 内部存储,使用 SCSI 适配器和专门用于这个分区…

超强网站,可以代替你电脑中所有的工具软件

「云」的确是个好东西,信息储存在云端后,我们想用就随时拿来用,不想用存在云里也不占空间。那么,平时用的工具软件,能不能也具备「用完即走」的属性呢? nicetool nicetool 之所以强大,在于集合…

大型网站架构演化历程

大型网站系统的特点 高并发,大流量 需要面对高并发用户,大流量访问。Google 日均 PV 35 亿,日 IP 访问数 3 亿;腾讯 QQ 的最大在线用户数 1.4 亿(2011年数据)。 高可用 系统 7 x 24 小时不间断服务。 海量数…

HTML5移动端手机网站开发流程

最近一直在研究移动手机网站的开发,发现做手机网站没有想象中的那么难。为什么会这么说呢?我们试想下:我们连传统的PC网站都会做,难道连一个小小的手机网站难道都搞不定吗?其实手机网站就是一个微缩版的PC网站罢了!至于…

nodeJs express mongodb 建站(linux 版)

一、环境安装 1、安装node wget http://nodejs.org/dist/v0.12.2/node-v0.12.2-linux-x64.tar.gz //下载tar xvf node-v0.12.2-linux-x64.tar.gz //解压cd node-v0.12.2-linux-x64 //到解压目录下cd bin //到bin目录下./node -v //设置全局 ,注意 前面的是你当前存放…

精品网站集合

1、three.js example https://threejs.org/examples/#webgl_animation_cloth 1、react-router-dom(react-router4.0) https://reacttraining.com/react-router/web/guides/philosophy 1、Stylus官方 http://stylus-lang.com/ 2、Less官方 http://lesscss.org/ 3、Sass …