Tag: 缓存

$ .ajax()调用,仅在更新时调用

我正在使用$ .ajax()请求读取xml。 $.ajax({ type: “GET”, async: false, url: “../../../ErrorMessages.xml”, dataType: “xml”, success: function (xml) { $(xml).find(“*[Name='” + Field + “‘]”).each(function () { message = $(this).find(Rule).text(); }); } }); 我想只在更新资源ErrorMessages.xml时才进行调用。 否则使用浏览器缓存。

jQuery(或者可能是浏览器)是缓存ajax加载的脚本

我正在使用jQuery通过$.ajax()调用加载一个视图页面。 我明确地将“cache”选项设置为true。 在应用程序中没有任何地方我们使用$.ajaxSetup()来指定其他方式。 这是ajax请求设置: $(“.viewDialogLink”).click(function() { $.ajax({ url: $(this).attr(“href”), dataType: “html”, type: “GET”, cache: true, success: function(data) { $(“#dlgViews”).html(data).dialog(“open”); } }); return false; }); 响应成功回复。 对话框打开,显示一些内容。 然而 返回的html中有脚本标记。 例如: 现在 – 在响应文本中,这些看起来很正常。 但是,从FireBug看到的实际浏览器对这些脚本的请求包括查询字符串中的cache-breaker参数 。 他们看着像是: http://serverapi.arcgisonline.com/jsapi/arcgis/?v=1.4&_=1264703589546 。 加载的html-css或images中的其他资源都不包含其请求中的缓存断开器。 到底是怎么回事? 如何关闭此缓存断路器?

即使使用mathrandom,IE8仍然会缓存我的请求

即使URL中包含Math.random(), TLDR IE仍然会缓存我的请求。 所以我在我的url末尾添加了数学随机数: var MYKMLURL = ‘http://’ + host + ‘data/pattern?key=’+ Math.random(); 我还在我的函数参数中添加了数学随机: window.setTimeout(RefreshPatternData, 1000, MYKMLLAYER); function RefreshPatternData(layer) { layer.loaded = false; layer.setVisibility(true); layer.refresh({ force: true, params: { ‘key’: Math.random()} }); setTimeout(RefreshPatternData, 30000, MYKMLLAYER); } 所以请求显示为http:// host / data / pattern?key = 35678652545等。 每次请求时它都会更改。 它适用于Firefox,Chrome和Safari等。但IE8仍在缓存数据,而不是更新我的图层。 关于为什么会出现这种情况的任何想法? 所以我补充说: 仍在缓存数据。 还有什么想法?

如何缓存从Ajax调用收到的数据?

我想缓存从服务器收到的数据,以便执行最少数量的PHP / MySQL指令。 我知道为$ .ajax()自动设置缓存选项。 但是,即使postdata与之前的调用相同,每次调用$ .ajax()时,我都会看到MySQL指令。 我错过了什么吗? 缓存从服务器接收的数据的最佳方法是什么? 这是我的代码: var postdata = {‘pid’:”, ‘record_id’:this.id}; $.ajax({ type: “POST”, url: “get_note.php”, data: postdata }).done(function(data){ if (data != ‘0’) { // Add dialog content $(‘#note_container’).html(data); $(‘#note_container’).dialog(); } else { alert(woops); } });

如何禁用浏览器缓存?

我有一个更新html的ajax函数(在jquery中)。 没关系。 现在,当我点击地址栏中的Enter(要刷新)时,我的html没有更新(旧内容)。 然而,当我做cmd + R ,我的html总是好的。 问题是什么 ? 为什么我的内容会显示地址栏中的旧内容? 编辑: 我在jQuery中使用Chrome et load()

jQuery是否在内部缓存元素?

我知道jQuery不会缓存元素集合,f.ex调用: $(‘.myclass’).html(‘hello’); $(‘.myclass’).html(‘bye’); 将使jQuery两次爬上DOM。 但缓存的DOM节点怎么样? var elems = document.querySelectorAll(‘.myclass’); $(elems).html(‘hello’); $(elems).html(‘bye’); jQuery会在内部缓存这些内容,还是会像第一个例子一样缓慢? 澄清一下:jQuery是否会在内部保留对elems的引用并缓存$(elems)以便每次都不必应用相同的$()包装器? 就像是: cache = {} constructor = function(collection) if collection in cache return cache[collection] else construct(collection)

jQuery .get缓存工作得太好了?

我正在使用jQuery .get()函数加载模板文件,然后通过定位特定的DOM元素将加载的HTML显示在页面的一部分中。 它运作良好,但我最近意识到的原因让我感到困惑的是它正在缓存我的模板文件并屏蔽我所做的更改。 别误会我的意思……我喜欢和下一个人一样的缓存。 我希望它在客户端缓存和服务器上的文件之间没有时间戳差异时进行缓存。 然而,这不是正在发生的事情。 为了使它更奇怪…使用相同的function加载模板…一些模板文件正在加载更新而其他模板文件没有(更喜欢缓存版本而不是最近的更改)。 下面是我使用的加载function。 function LoadTemplateFile ( DOMlocation , templateFile , addEventsFlag ) { $.get( templateFile , function (data) { $( DOMlocation ).html(data); }); } 任何帮助将不胜感激。 新细节:我一直在做一些调试,现在看到返回到成功函数的“数据”变量确实有更新的信息但是由于我还不清楚的原因是什么插入到DOM中是旧版本。 如何发生这种情况现在已成为我的问题。

jQuery缓存选择器

我有id #wrapper div,所有元素都在里面。 我正在通过这样做来缓存包装器 var $wrapper = $(‘#wrapper’); 现在,无论何时我想制作一个选择器或引用一个元素,我都可以 $wrapper.find(‘#whatever’).click(…. 通过这样做,我避免再次使用jQuery对象包装,因此我将来做的任何选择器都将基于缓存的$wrapper 。 但另一方面,当我使用带有缓存的$ wrapper的find()时,我知道它会搜索#wrapper所有元素。 我的问题是更好更好,使用缓存变量以及查找然后发出click事件,或者只是简单地执行$(‘#whatever’).click(.. whatever是类还是id whatever可以。

使用javascript强制图像缓存

我正在尝试克隆随机生成的图像。 虽然我使用完全相同的URL,但是加载了不同的图像。 (在chrome和firefox中测试过) 我无法更改图像服务器,所以我正在寻找一个纯粹的javascript / jQuery解决方案。 你如何强制浏览器重用第一张图片? 火狐: 铬: 自己试试(也许你需要多次重装才能看到它) 代码: http : //jsfiddle.net/TRUbK/ $(“”).attr(‘src’, img_src) $(“”).css(‘background’, background) $(“#source”).clone() 演示: http : //jsfiddle.net/TRUbK/embedded/result/

在iframe中加载后,图像不会从缓存中加载

我正在iframe中加载图像,然后(一旦加载了iframe)在页面上加载图像。 但是大多数浏览器似乎都在加载图像两次。 为什么不从缓存中加载img标记? 像这样的东西: var loader = $(”).appendTo(‘body’)[0]; loader.onload = function() { $(‘body’).append(”); }; loader.src = imgsrc; http://jsfiddle.net/amirshim/na3UA/ 我正在使用fiddler2来查看网络流量。 如果您想知道我为什么要这样做,请查看此问题