易截截图软件、单文件、免安装、纯绿色、仅160KB

Ajax中请求被缓存的问题

今天搞了我三四个小时的问题,终于找到解决方案了。哈哈。
在Ajax开发中,会遇到浏览器缓存内容的问题,比如,某个元素注册了鼠标事件(onmouseover),事件触发后会通过xmlhttprequest到服务器获取内容,在不刷新页面的情况下,浏览器会缓存第一次请求的内容,服务端更新后浏览器仍然显示第一次的内容。
通常,这种请求都是xmlhttprequest发起的GET请求。根据 HTTP 规范,GET 用于信息获取,而且应该是幂等的。也就是说,当使用相同的URL重复GET请求会返回预期的相同结果时,GET方法才是适用的。当对一个请求有副作用的时候(例如,提交数据注册新用户时),应该使用POST请求而不是GET。所以浏览器会对GET请求做缓存处理。
解决办法:
一. GET请求URL后附加字串,让服务器认为不是相同的请求。
例 “http://www.example.com/index.php?class=aitcle&page=5&_t=” + new Date().getTime()
二. 在ajax发送请求前加上 xmlHttpRequest.setRequestHeader(”If-Modified-Since”,”0″)
三. 在ajax发送请求前加上 xmlHttpRequest.setRequestHeader(”Cache-Control”,”no-cache”);
四. 服务端响应请求时加 header(”Cache-Control: no-cache, must-revalidate”); (PHP)
五. 使用POST代替GET,浏览器不会对POST做缓存
附录:
RFC1945中的英文原文如下:
8.1 GET
The GET method means retrieve whatever information (in the form of an
entity) is identified by the Request-URI. If the Request-URI refers
to a data-producing process, it is the produced data which shall be
returned as the entity in the response and not the source text of the
process, unless that text happens to be the output of the process.
The semantics of the GET method changes to a “conditional GET” if the
request message includes an If-Modified-Since header field. A
conditional GET method requests that the identified resource be
transferred only if it has been modified since the date given by the
If-Modified-Since header, as described in Section 10.9. The
conditional GET method is intended to reduce network usage by
allowing cached entities to be refreshed without requiring multiple
requests or trans


相关文档:

2009 12 28 传智播客—AJAX(综合练习)


今天早上老佟将昨天的练习进行了讲解。今天的主要内容是对AJAX的汇总练习,做了两个练习都是比较常使用的应用。
 
一、              下拉框的级联,比如,选择下拉框一中的内容(城市名称),在下拉框二中显示在这个城市中的部门。在下拉 ......

AJAX中文问题[转]

AJAX中文问题分为两大类:
1)发送路径中的参数有中文,在服务器段接收参数值是乱码
例如:
var url="a.jsp?name=小李";
xmlHTTP.open ("post",url,true);
解决办法:
利用javascript的提供的escape()或encodeURI()方法
例如:
客户端:
var url="a.jsp?name=小李";
url=encode ......

JavaScript 简单理解Ajax异步调用操作

JavaScript 简单理解Ajax异步调用操作的文章。
文章地址:http://www.soaspx.com/dotnet/ajax/javascript/javascript_20090915_349.html
这篇文章是理解Ajax技术的简单例程,挺简明扼要,很容易理解。
Ajax提供与服务器异步通信的能力,借助于Ajax,可以在用户单击按钮时,使用JavaScript和 DHTML立即更新UI,并向服务器 ......

jquery+ajax+json+asp.net学习笔记(一)

jquery中已经封装了ajax的过程,使用起来很简单:
通过get方式提交:
<html>
<head>
    <title>实现服务器时间实时变化</title>
    <script language="javascript" type="text/javascript" src="js/jquery-1.3.1.js"></script>
  & ......

jquery+ajax+json+asp.net学习笔记(二)

jquery通过post传递数据到服务器(不使用插件):
<html>
<head>
    <title>Untitled Page</title>
    <script language="javascript" type="text/javascript" src="js/jquery-1.3.1.js"></script>
    <script language="ja ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号