解决HTTP数据不更新问题——no-cache在HTTP通信协议中的应用

所属分类: 软件教程 / 经验技巧 阅读数: 1948
收藏 0 赞 0 分享
转贴请注明出处:http://blog.csdn.net/froole
HTTP服务器向客户端返回的头信息中可以包含Cache-Control:no-cache信息,意为“数据内容不被储存”。
很多WEB程序设计中,通常并不需要考虑这一点。但是,对相同URL的请求,并需要动态数据时,就需要程序员对服务器返回头信息的进行修改。
例如,通过Ajax向同一个URL发送请求、页面访问同一个URL并需要动态显示页面内容。
在不对服务器所返回头信息做任何修饰的情况下,Cache-Control可能不被添加,此时,浏览器将缓存从服务器取得的信息。如果再次访问网页,浏览器会直接读取缓存数据,而非访问HTTP服务器,如果通过代理再次访问网页,那么,代理服务器将会直接向浏览器返回一个302状态,命令浏览器从缓存读取数据。
本文想定开发人员遭遇以下两种情况:
1.Ajax中,需要通过一个URL适时提取动态数据(例如,使用DWR提取某个POJO的数据);
2.在一个网页中,通过对某个连接的重复访问(发送请求),动态读取不同的页面数据(例如,根据某个项目的列排序)。
如果可以在设计阶段,就已经考虑到通过URL参数,改变URL,倒也不需要考虑缓存的问题。但是,如果URL相同,就会出现相应数据更新迟缓的现象。例如,如果访问速度相对较快,第一次访问和第二次访问的数据,在同一个客户端是相同的。也就是HTTP数据不更新/更新迟缓现象。
解决此问题的方法,就是向服务器的返回头信息“Cache-Control:no-cache”。
PHP的情况,可以向相应的返回处理中添加以下代码:
header("Cache-Control: no-cache");
header("Cache-Control: no-cache");
Java的情况,可以定义相应的URL,通过操作HttpServletResponse定义头信息,如下:

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
((HttpServletResponse) response).setHeader("Cache-Control", "no-cache");
chain.doFilter(request, response);
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
((HttpServletResponse) response).setHeader("Cache-Control", "no-cache");
chain.doFilter(request, response);
}
以上两个例子,虽然是在不同语言下的实现,但是从HTTP协议通信的角度,其效果是类似的。
使用Cache-Control需要注意的
通过控制Cache-Control头信息,可以让浏览器(代理服务器)及时更新请求数据。但是要注意的是,只有在HTTP1.1下才Cache-Control被支持。
当然,HTTP的版本在大多数WEB开发中,同样不需要考虑。而目前的主流浏览器也都是默认支持HTTP1.1。但是,如果使用IE6,并且通过代理服务器访问网站的时候,浏览器的HTTP请求就要变成HTTP1.0了。这个时候,Cache-Control就会失效,而且无法从服务器端控制HTTP协议版本。只能通过浏览器的设定来解决,方法是,通过IE详细设置中的HTTP1.1设定来解决。如果可能,也可以把目标服务器排除在代理目标之外。
更多精彩内容其他人还在看

12306手机怎么抢票 铁路12306app春节抢票教程

12306手机怎么抢票 2017年春节将近,很多在外的上班族都在关注抢票的事情,下文小编就为大家带来铁路12306app春节抢票教程,一起看看吧
收藏 0 赞 0 分享

2017春运火车票抢票技巧 多种途径抢票攻略

马上就2017年了,时间过得好快就像龙卷风,这么一算,又到了全民挤火车的时候。2017年春运火车票明天就开始开抢了,下面是小编精心为大家整理的2017春运火车票购买技巧,希望大家能顺利抢到过车票
收藏 0 赞 0 分享

搜狗输入法打字卡顿怎么办 搜狗输入法候选框卡顿现象的解决办法

近日,有网友反映在使用过搜狗输入法打字的时候会出现搜狗输入法候选框卡顿的情况,那么,搜狗输入法打字卡顿怎么办?如何解决?对此,本文就为大家图文介绍搜狗输入法候选框卡顿现象的解决方法
收藏 0 赞 0 分享

Textify软件复制任意窗口内容功能图文使用教程

Textify是一款功能非常强大的复制界面工具,它可以轻松复制到平常不可以复制的软件标题、设置项,弹出窗口、对话框中的内容,本文主要为大家图文详细介绍Textify软件复制任意窗口内容的功能使用方法
收藏 0 赞 0 分享

CSI SAFE 2014安装破解图文教程(附下载地址)

近日有在本站下载CSI SAFE 2014软件的伙伴们问小编:CSI SAFE 2014软件怎么安装?以及CSI SAFE 2014怎么利用注册机进行破解呢?针对此类问题,本文就为大家进行图文详细解答
收藏 0 赞 0 分享

无需用流量管家等软件!rainmeter让你的电脑实时显示网速

有位小伙伴希望电脑能够实时显示网速,而又不想用流量管家一类的软件。单纯的解决这个需求是非常简单的,不想被全家桶,那就找一些适合自己的小插件,下面小编为大家介绍一个软件,不仅能提供各种各样的桌面显示插件,还可以将你的桌面变得极为个性,一次性解决各种问题
收藏 0 赞 0 分享

ANSYS v17.2 安装及破解图文教程(超详细+下载地址)

ANSYS 17.2是一款非常好用且强大的有限元析计算软件,近日,有在本站下载ANSYS v17.2版软件的伙伴问小编:ANSYS v17.2怎么安装?以及ANSYS v17.2如何破解?对此,本文就为大家进行图文解答
收藏 0 赞 0 分享

联通推出优酷专用流量包15元:随买随用当天失效(附订购地址)

!联通今天推出了优酷专属流量包,3元1GB、5元2GB的价格非常便宜,而且随买随用,不过仅限当天,下面为大家分享订购网址,有需要的朋友可以过来试试哦
收藏 0 赞 0 分享

百度地图怎么查全国雾霾地图?

百度地图怎么查全国雾霾地图?想知道中国的雾霾情况,该怎么查询呢?下面我们就来看看使用百度地图查询全国地图的教程,很简单,需要的朋友可以参考下
收藏 0 赞 0 分享

电脑版支付宝怎么找在线客服?

电脑版支付宝怎么找在线客服?电脑版的支付宝想要找到人工客服,但是不知道在哪里,下面我们就来看看电脑版支付宝查询人工客服的教程,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多