Ajax请求与浏览器缓存】的更多相关文章

在现代Web应用程序中,前端代码充斥着大量的Ajax请求,如果对于Ajax请求可以使用浏览器缓存,那么可以显著地减少网络请求,提高程序响应速度. 1. Ajax Request 使用jQuery框架可以很方便的进行Ajax请求,示例代码如下: 1 $.ajax({ 2 url : 'url', 3 dataType : "xml", 4 cache: true, 5 success : function(xml, status){ 6 } 7 }); 非常简单,注意其中的第4行代码:c…
解决Ajax中IE浏览器缓存问题 1.首先,先看一张图.从这张图中我们可以清楚的了解到从请求的发出到解析响应的过程. 2.根据图中的三个节点我们可以使用三种方式解决这个缓存问题(主要是针对ie) 2.1:强行让每次请求的地址不同 ① :在URL中 添加随机数 ② :在URL中 添加时间戳 2.2:让ie在延用缓存的时候真的发起请求,携带请求头 If-Modified-Since:0 故意让缓存过期 让IE发起请求,并主动把缓存文件的产生时间携带到服务器端,进行缓存是否有效的比较 在ajax对象.…
本文导读:浏览器缓存机制,其实主要就是HTTP协议定义的缓存机制.客户端缓存是否需要是可以在服务端代码上控制的.那就是响应头.响应头告诉缓存器不要保留缓存,缓存器就不会缓存相应内容:如果请求信息是需要认证或者安全加密的,相应内容也不会被缓存.那么,HTTP请求中浏览器是如何缓存数据呢? 一.HTTP请求中浏览器缓存流程图 1.浏览器第一次请求 2.浏览器再次请求时 二.HTTP请求中浏览器缓存流程的文字描述 1.当资源第一次被访问的时候,HTTP头部如下 (Request-Line) GET /…
在默认情况下,IE会针对请求地址缓存Ajax请求的结果.换句话说,在缓存过期之前,针对相同地址发起的多个Ajax请求,只有第一次会真正发送到服务端.在某些情况下,这种默认的缓存机制并不是我们希望的(比如获取实时数据),这篇文章就来简单地讨论这个问题,以及介绍几种解决方案. 详见:http://www.cnblogs.com/artech/archive/2013/01/03/cache-4-ie.html…
1.在服务端加 header(“Cache-Control: no-cache, must-revalidate”);2.在ajax发送请求前加上 anyAjaxObj.setRequestHeader(“If-Modified-Since”,”0″);3.在ajax发送请求前加上 anyAjaxObj.setRequestHeader(“Cache-Control”,”no-cache”);4.在 Ajax 的 URL 参数后加上 “?fresh=” + Math.random(); //当然…
ajax前置处理实现异步请求session过期时跳转登录页面 function checkLogin(json) { if (typeof(json) === 'string' && ~json.indexOf('<!DOCTYPE html>')) { window.location.href = $('base').attr('href') + 'auth/login' } }…
$("#xxx").val() not $("#xxx") 如果忘记加上.val()会导致chrome崩溃…
Ajax请求被缓存的几种处理方式 我们都知道IE会针对ajax请求的地址缓存请求结果,直到缓存过期之前,针对相同地址发出的请求,只有第一次会请求会真正发送到服务端.在某种情况下,这种缓存机制确实能提高web的响应速度,但是有时候并不是我们需要的,有时候我们需要获取即时信息,那么有哪几种方式来解决这个问题呢,下面列举了几种解决方案! 1.  通过URL添加后缀的方式 这种方式是我们大家都会使用的技巧,大多人都知道 例如: 本来请求的地址是: /home/action? 加查询参数后缀后:/home…
优化网站设计(十四):使AJAX调用尽可能利用缓存特性 前言 网站设计的优化是一个很大的话题,有一些通用的原则,也有针对不同开发平台的一些建议.这方面的研究一直没有停止过,我在不同的场合也分享过这样的话题. 作为通用的原则,雅虎的工程师团队曾经给出过35个最佳实践.这个列表请参考  Best Practices for Speeding Up Your Web Site http://developer.yahoo.com/performance/rules.html,同时,他们还发布了一个相应…
浏览器端的九种缓存机制介绍 浏览器缓存是浏览器端保存数据用于快速读取或避免重复资源请求的优化机制,有效的缓存使用可以避免重复的网络请求和浏览器快速地读取本地数据,整体上加速网页展示给用户.浏览器端缓存的机制种类较多,总体归纳为九种,这里详细分析下这九种缓存机制的原理和使用场景.打开浏览器的调试模式->resources左侧就有浏览器的8种缓存机制. 一.http缓存 http缓存是基于HTTP协议的浏览器文件级缓存机制.即针对文件的重复请求情况下,浏览器可以根据协议头判断从服务器端请求文件还是从…
开篇三问 AJAX请求真的不安全么? AJAX请求哪里不安全? 怎么样让AJAX请求更安全? 前言 本文包含的内容较多,包括AJAX,CORS,XSS,CSRF等内容,要完整的看完并理解需要付出一定的时间. 另外,见解有限,如有描述不当之处,请帮忙及时指出. 正文开始... 从入坑前端开始,一直到现在,AJAX请求都是以极高的频率重复出现,也解决过不少AJAX中遇到的问题,如跨域调试,错误调试等等. 从这种,发现了一个共通现象:那就是每次和后台人员对接时,他们都会提到AJAX请求不安全,请用普通…
摘要 1.Etag和Expires中Client 端Http Request Header及Server端Http Reponse Header工作原理. 2.静态下Apache.Lighttpd和Nginx中Etag和Expires配置 3.非实时交互动态页面中Etag和Expires处理 在客户端通过浏览器发出第一次请求某一个URL时,根据  HTTP 协议 的规定,浏览器会向服务器传送报头(Http Request Header ),服务器端响应同时记录相关属性标记(Http Repons…
用fiddler调试http请求,在ie浏览器下,如果请求命中缓存,fiddler不会包含该请求.但是在chrome下会包含缓存的请求,Result显示为304. ie浏览器还会缓存通过ajax请求的数据,导致后续ajax的请求数据不能更新.实际上是只缓存get方式的请求,post方法因为每次的数据不一样,所以不会被缓存. 解解方法: 客户端: $.get(url,{ "r": new Date().getTime() }, function(res){ //每次的请求不一样,浏览器就…
IE10浏览器会把AJAX请求的数据都缓存下来,然后每次想去刷新数据时发现数据都是一样的,于是导致数据显示异常. 解决方法: 在页面<head>标签里,加上以下声明: <!-- 解决ie浏览器缓存代码start --> <meta HTTP-EQUIV="pragma" CONTENT="no-cache"> <meta HTTP-EQUIV="Cache-Control" CONTENT="n…
开发「bufpay.com 个人即时到账收款平台」支付页面需要用到 ajax 轮询订单的支付状态. 现在浏览器对 ajax 的缓存策略遵循 http response header 里面的缓存设置,为了保证每次轮询需要获取最新的订单信息,我们需要对 ajax 请求做一些修改. 如果你使用 jquery 可以直接在 document ready 的时候用 $.ajaxSetup({ cache: false }); 来让每个 ajax 请求都在后面添加时间戳. bufpay.com的支付页面为了最…
在IE浏览器中通过Ajax请求后台的数据,如果Page请求是postback类型的,可能会导致Ajax请求失败的问题 我们都知道ajax能提高页面载入的速度主要的原因是通过ajax减少了重复数据的载入,也就是说在载入数据的同时将数据缓存到内存中,一旦数据被加载其中,只要我们没有刷新页面,这些数据就会一直被缓存在内存中,当我们提交 的URL与历史的URL一致时,就不需要提交给服务器,也就是不需要从服务器上面去获取数据,虽然这样降低了服务器的负载提高了用户的体验,但是我们不能获取最新的数据,特别是那…
如上图所示,在ie浏览器下发出的请求,如何缓存中已经出现过这条请求记录,则不会请求服务端数据,解决方法是在请求后增加一个随机数,使每次请求都不同*可以添加当前时间戳 url+'?t='+Date.now(), 请求如下…
项目:jquery-ajax-cache 地址:https://github.com/WQTeam/jquery-ajax-cache     最近在项目中用到了本地缓存localStorage做数据的缓存. 1.简单说下localStorage localStorage和cookies相比,在浏览器中存储的容量更大.另外最大的特点是不会附带在http请求中传给后台,不会像cookies一样导致http头部变大影响传输性能.基于这个原因,localStorage适合缓存一些常用的数据,无需平凡的…
在使用ajax向后台发送请求的时候,在使用ie 进行调试的时候发现根据条件进行查询时,返回的数据与没有根据条件进行查询时数据相同,也就是条件没有发生作用. 经过同事的帮助发现ajax初始化设置时没有cache:false,ie发现走的是同一个函数,所以直接读了缓存数据. 现将ajax各参数说明放到这里,以备以后使用: url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请…
一 现象 get请求在有些浏览器中会缓存.浏览器不会发送请求,而是使用上次请求获取到的结果. post请求不会缓存.每次都会发送请求. 二 解决 jQuery提供了禁止Ajax请求缓存的方法: $.ajax({ type: "get", url: "http://www.baidu.com?_=", cache: false }); 它的工作原理是在GET请求参数中附加时间戳"_={timestamp}" 三 源码 jQuery.extend(…
ajax简单介绍 没有AJAX会怎么样?普通的ASP.Net每次运行服务端方法的时候都要刷新当前页面. 假设没有AJAX,在youku看视频的过程中假设点击了"顶.踩".评论.评论翻页,页面就会刷新,视频就会被打断.开发一个看效果:用<video src="diaosi.mp4" autoplay controls></video>播放视频(仅仅有支持html5的浏览器能播放).然后放一个"赞"button的功能(赞的数量…
C#中缓存的使用   缓存的概念及优缺点在这里就不多做介绍,主要介绍一下使用的方法. 1.在ASP.NET中页面缓存的使用方法简单,只需要在aspx页的顶部加上一句声明即可:  <%@ OutputCache Duration="100" VaryByParam="none" %> Duration:缓存时间(秒为单位),必填属性 2.使用微软自带的类库System.Web.Caching 新手接触的话不建议直接使用微软提供的类库,因为这样对理解不够深刻…
1.发送请求时必须使用get方法. 2.服务器端设置响应报文的Expires为希望浏览器缓存的时间 如果这两个条件都不满足时,也就是说无法通过浏览器缓存来缓存文件时: 在js中设置一个localCache数组,将ajax返回的报文以url为键储存在localCache中. var localCache = [], url = "http://www....."; if(localCache[url]){ doSomething(localCache[url]); }else{ $.aj…
IE浏览器下使用GET发送请求时,如果两次请求的地址和参数相同,在不刷新页面的情况下,浏览器会缓存第一次的请求的内容,服务端更新后浏览器仍然显示第一次的内容 如在当前页面用户登录,在未登录的情况下,服务器返回的用户信息为空,点击登录后发起请求返回的用户信息仍然是为空,这是因为浏览器会对GET请求做缓存处理.解决办法: 1.GET请求URL后加随机数,让服务器认为不是相同的请求.也可以传一个随机的参数 eg:http://dev.example.com/Example/GetFormation?t…
在发送ajax请求的时候,为了保证每次的都与服务器交互,就要传递一个参数每次都不一样,这里就用了时间戳 大家在系统开发中都可能会在js中用到ajax或者dwr,因为IE的缓存,使得我们在填入相同的值的时候总是使用IE缓存,为了解决这个问题一般可以用一下方法:1:在ajax或者dwr提交的url后面加时间戳.例如http_request.onreadystatechange = funcName(函数名);http_request.open("GET", url, true);比如url…
一.问题的起因 今天做一个需求遇到了这么个情况,就是用户个人中心有个功能,点击按钮,可以刷新用户当前的积分,这个肯定需要使用到ajax的同步请求了,当时喀喀喀三下五除二写玩了,大概代码如下: /** * 异步当前用户积分 by zgw 20161216 * @return {[type]} [description] */ function flushIntegralSum() { //点击按钮刷新前修改按钮的文案,已经去掉点击事情,防止多次点击 $("#flushbutton").r…
window.open()我想应该很多人都不陌生吧,它可以实现除用a标签以外来实现打开新窗口! 最近开发项目用到时,却遇到了麻烦,本来好好的弹出窗口,结果被浏览器无情的给拦截了! 代码如下: $.getJSON(URL,data,function(data,state){ if(state=='success'){ window.open('http://www.cnblogs.com/garfieldzhong/'); }else{ alert('请求失败!'); } }) 这要手动允许弹出窗…
摘要:在Web开发过程中,我们可能会经常遇到浏览器缓存的问题.本文作者详细解释了浏览器缓存的机制,帮助读者更深层次的认识浏览器的缓存. 流程 当资源第一次被访问的时候,HTTP头部如下 (Request-Line) GET /a.html HTTP/1.1 Host 127.0.0.1 User-Agent Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.0.15) Gecko/2009102815 Ubuntu/9.04 (jaunty) Fire…
场景 码农小明要做一个展示业务数据的大屏给老板看,里面包含了来自自己网站的数据和来自隔壁老王的数据.那么自己网站的数据提供了 http://xiaoming.com/whoami 这样的数据接口隔壁老王提供了 http://oldwang.com/isdad 这样的数据接口单独点开都是没有问题的.但是一使用 js 的 ajax 请求就无法收到来自 oldwang.com 的数据了.点开浏览器控制台一看,红字标出(Chrome): XMLHttpRequest cannot load http:/…
仅仅须要两步: 1.定义一个Filter: /** * 防止浏览器缓存页面或请求结果 * @author XuJijun * */ public class NoCacheFilter implements Filter { @Override public void destroy(){ } @Override public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOE…