使用缓存技术优化网站访问

news/2024/5/9 15:23:58/文章来源:https://blog.csdn.net/weixin_30906701/article/details/97852740

  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

 

from:http://blog.chenlb.com/2009/07/http-caching-optimize-your-site.html 

转载于:https://www.cnblogs.com/flysnow-z/archive/2011/12/15/2288783.html

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

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

相关文章

新手如何建设属于自己的网站

怎样建设一个属于自己的网站?南通网站建设步骤有哪些?每一个要建站的小白首先想到的肯定是这两个问题。其实这两个问题的范围很广,主要是由于很多刚入门的小白对网站建设的概念很模糊,下面小编就介绍网站建设的详细步骤&#xff0…

没有灵感头发都快抓掉了!推荐几款创意网站,让大脑灵光一动!

1. iDsketchhttp://www.idsketch.cn/工艺设计的草图设计手绘。 里面有系统教育方法,知道新人如何学习手绘,会将国外的手绘方法进行翻译。全方位系统的教你手绘。2. ShoppingDesignhttps://www.shoppingdesig产品包装设计。在这里能够给你带来更多创意灵感…

推荐30款超精致的体育类型的网站设计

日期:2012-11-24 来源:GBin1.com 相信大家肯定喜欢体育运动,如果你是运动迷儿的话,千万不要错过下面的体育相关网站设计。体育网站一般分为这样几个不同的类型:体育新闻、体育俱乐部、体育服饰和一些业界名人的个人网…

6月第四周域名网站排名:新网和易名中国并列第三

据国际统计机构Alexa公布的最新数据数据显示,在6月18日-6月24日期间,国内域名主机网站周均用户覆盖数排名前三位的是:中国万网,达1540。西部数码次之,达620,新网和易名中国并列第三名,达560。 &…

接入网站总结

思路: 认证---->获取token(请求接口时,必须要带上token的值才可以访问接口,应该是考虑到安全问题)---->请求对应的接口获取数据 现在大网站的一些都有例子的 至少我现在做的qq和新浪都是有的。新浪的简单 拿新浪的举例吧。过程都是一样的。 1,一个…

PaperBye一个可智能改重的免费论文查重网站。

2019独角兽企业重金招聘Python工程师标准>>> 推荐一个可以智能改重的免费论文查重软件,可自动降低论文重复率,同步修改、实时查重,一边修改,一边查重,修改完即查重完毕,修改论文效率高&#xff…

大型网站技术架构(四)网站的高性能架构

2019独角兽企业重金招聘Python工程师标准>>> 网站性能是客观的指标,可以具体体现到响应时间、吞吐量、并发数、性能计数器等技术指标。 1、性能测试指标 1.1 响应时间 指应用执行一个操作需要的时间,指从发出请求到最后收到响应数据所需要的时…

网站程序(案例)

Insus.NET分享一个案例网站程序。程序中95%的功能添加与设置在后台管理平台进行,剩余的5%就是前台网页的自定义设计。程序是使用.NET Framework 4.0 ASP.NET MS SQL Server 2008 R2 VB.NET进行开发。功能与特色:文章编辑器使用:CuteEditor…

SharePoint 2013 报:网站在改进过程中处于只读状态,对此给您带来的不便,我们深表歉意...

SharePoint 2013备份过程意外中断,导致再打开站点报:网站在改进过程中处于只读状态,对此给您带来的不便,我们深表歉意 英文:We apologize for any inconvenience, but weve made the site read only while were making…

如何在XAMPP中设置多个网站

xampp 是一个非常方便的本地 apache php mysql 的调试环境,在本地安装测试 WordPress 等各种博客、论坛程序非常方便。今天我们来给大家介绍一下,如何使用 XAMPP 在本地进行安装多个网站。 一般情况下,我们只需要网站程序放到 xampp/htdoc …

网站主机、域名购买和部署的方法

本文主要适用于第一次购买域名和空间的朋友。 我们都知道一个网站想要在互联网上访问,大致需要三个东西。第一、我们要访问的网站本身的工程文件,就是用户看到的东西。第二、我们需要租用一个空间用来存放我们的网站工程文件,在空间中会有附带…

大型网站技术架构系列2:负载均衡

2019独角兽企业重金招聘Python工程师标准>>> 本文主要讲解nginx的负载均衡。 负载均衡基于nginx的反向代理功能。 ~~~~~~~~~~~~~~~~~~ 1)让nginx支持jsp动态文件 操作方法:---修改nginx.conf,在server里添加 location ~ \.jsp$ {p…

转载-30分钟搞定后台登录界面(103个后台PSD源文件、素材网站)

原文:30分钟搞定后台登录界面(103个后台PSD源文件、素材网站) 目录 一、界面预览二、PSD源文件预览三、工具分享四、资源说明五、素材下载网站六、下载去年八月时要做一个OA系统为了后台界面而烦恼,后来写了一篇博客(《…

python怎么开发网站_python可以开发网站吗

python可以开发网站,python在web开发方面强大的开发框架是django。做网站开发之前,同样要掌握一些python的基础语法。 1、python基础,因为用python开发的,所以python指定要会,最起码你也得会条件判断,循环&…

重定向次数过多怎么解决_网站速度对搜索引擎优化到底有怎么的影响?| 谷歌SEO怎么优化...

可能有些会很难理解网站页面速度和搜索引擎优化是如何联系起来的。但早在2010年,谷歌就表示,网站页面速度将在搜索引擎优化(SEO)中占据重要作用,这将会影响你的网站页面在搜索引擎结果页面(Search Engine Result Page)上的排名。随着移动设备…

发布网站碰到的问题

出现这种错误 编译器错误信息: CS0016: 未能写入输出文件 当时装了2个同样的数据库(mysql一个高版本,一个低版本),导致不可以发布网站,也不可以访问别人在本地发布的网站 解决方法删除一个数据库既可以解决 解决管理员…

一键seo提交收录_百度网站提交,选择主动提交,还是被动收录?

对于百度收录而言,一直以来都是困扰SEO人员的一个核心问题,每天都会有大量的站长在思考,为什么我的页面没有收录,于是便开始想尽各种途径,促使页面被百度快速收录。这其中我们一定不会脱离下面三个渠道:① …

新闻发布网站代码_如何把新闻稿发布到门户网站上?上海专业代发新闻稿公司...

什么是软文营销?简单来说,就是把一篇关于您企业的宣传文章,新闻,会议活动,或者一个新的观点,或者是一篇可以引起读者共鸣的文章发布多家不同新闻媒体上,用户就可以在媒体上,或者从搜…

laravel 分词搜索匹配度_电商网站上的搜索功能是如何实现的?

今天是刘小爱自学Java的第159天。感谢你的观看,谢谢你。学习计划安排如下:索引库本质上和数据库类似,也是存储数据的,既然如此自然也会有增删改查。那么这个索引库到底有何特别应用呢?索引库的特别之处在于它的查询&am…

一批信息查询网站汇总

一、查企业 1、全国企业信用信息公示 http://gsxt.saic.gov.cn/ 国内企业工商注册登记信息 2、信用视界 http://www.x315.com/ 全球企业信息 3、悉知 http://www.xizhi.com/ 国内企业信息含联系方式经营范围 4、纳税人 http://hd.chinatax.gov.cn/fagui/action/InitCredit.do 5…