Tag: 缓存

JQuery和脚本缓存

我在JQuery中遇到了一个相当离奇的行为。 我正在使用以下代码动态加载一系列脚本: for (var i=0; i<requiredScripts.length; i++) { $.ajax({ url: baseURL+"js/"+requiredScripts[i], async: false, dataType: 'script', success: checkLoaded }); } checkLoaded函数只增加一个计数器,这样当所有脚本都被加载后,它就会执行某些函数。 一切都工作正常,直到我上传了其中一个加载脚本的较新版本。 JQuery似乎继续加载旧的。 我试图刷新(并强制刷新)页面是徒劳的…… 所以我禁用了缓存(来自WebDeveloper工具栏),现在脚本神奇地加载了。 但是当我重新启用缓存时,旧脚本又回来了…… 我甚至从服务器删除文件,但没有做任何事情! (除非我禁用缓存,即)。 我确信我只是错过了一些非常简单的东西,但我无法理解。 提前感谢任何可以提供帮助的人。 编辑 :只是为了澄清,我确实希望缓存该文件。 我不明白的是为什么强制刷新页面不会导致获取新脚本。 另外,请注意,只有在我使用JQuery加载文件时才会发生这种情况,如果我在HTML中手动添加它们,则强制刷新会加载新页面。 编辑#2 :通过从FF删除缓存来解决。 仍然,不明白为什么CTRL + SHIFT + R没有做到这一点……

如何在JQuery中使用localStorage为ajax调用创建自定义缓存机制?

我试图为我的ajax调用编写自定义缓存机制,这些调用主要是数据调用。 因此,我不是将它们放在浏览器缓存中,而是将它们放在localStorage中以供长期使用。 但我无法弄清楚如何伪造JQuery.ajax的请求完成。 我可以成功拦截调用,但由于某种原因,我对回调函数的调用没有相同的范围。 $.ajaxPrefilter( function( options, originalOptions, jqXHR ) { var key; originalOptions.data = originalOptions.data || {}; key = options.localStorageKey = options.url + ‘?’ + $.param(originalOptions.data); var value = localStorage.getItem(key); if(value) { //Still not working jqXHR.abort();//Abort this call options.success(JSON.parse(value));//Call the callback function return jqXHR();//return xhr for chaining (?) } }); $(‘#logo’).ajaxComplete(function(e,xhr,settings) { //cache the […]

在Javascript中如何检查用户是否具有文件的缓存版本?

可能重复: 如何检测XHR何时返回缓存资源? 我构建了一个自动加载器,如果尚未使用jquery在此页面上加载javascript文件,则只加载javascript文件: $.getScript(); 我首先检查function是否存在,如果不存在则加载它们。 但是,这无法解释浏览器缓存,我希望我能够弄清楚如何。 我想添加的一件事是查看用户是否已将文件保存在浏览器缓存中。 是否可以检查服务器上的文件是否已经缓存在用户浏览器上,以便我可以跳过对服务器的调用?

Twitter api每小时只允许150次json通话,Twitter会丢弃不需要的cookie。 我该如何防止这种情况?

我在我的网站上有一个twitter feed,它由jquery tweet插件tweet.seaofclouds.com和其他一些从第三方网站获取json feed的json插件提供支持。 问题是数据,twitter api每小时只允许150个电话,所以每小时有40个访问者,平均每个访问者有5个网页浏览量,我会超过最大值。 特别是因为twitter禁用缓存上的feed。 此外,还有coockie法律问题。 Twitter在请求提要时丢弃cookie,我不想要它们,因为他们需要有权删除,所以我想一直禁用它们。 我的网站也是SSL安全的,我希望尽可能少地加载外部资源,我希望它全部本地化。 如何在本地缓存这些json提要?

Jquery使用本地存储缓存Ajax XMLHttpResponse

我有一个需要升级的Jquery网站以提供本地存储缓存function,如果有缓存的响应HTML,Target会先对每个Ajax请求进行检查,然后它不会调用服务器端,而是从缓存中获取数据。 从缓存中缓存和显示数据等一切正常。 将我的缓存核心应用于严重依赖于XML HTTP响应标头的网站时出现了我的问题; 看来当我尝试在使用JSON.Stringify()序列化后,尝试缓存从ajax调用返回的XMLHttpResponse对象时,从JSON.Parse()返回的desearialized对象不包含响应标题! 我必须从包含所有先前添加的标头的缓存中返回XMLHttpResponse对象,因为所有网站都将其作为XMLHttpResponse的对象处理。 有任何想法吗?

jQuery UI对话框 – 第一次无法打开

我使用jQuery UI对话框作为确认框,当您单击链接时,对话框将打开问题和两个按钮。 但是我在对话框中遇到了一些负载问题。 当我第一次访问该页面时,该对话框将无法打开。 当我按F5并再次尝试时,它工作正常。 这是我的代码: $(document).ready(function() { var url; $( “#dialog” ).dialog( { autoOpen: false, resizable: false, modal: true, buttons: { “Yes”: function() { $(this).dialog(“close”); window.location.href = url; }, “No”: function() { $(this).dialog(“close”); } } }); $(“a.supportClub”).click(function(e) { e.preventDefault(); url = e.target; $(“#dialog”).dialog(“open”); }); }); The question Support 希望能有人帮助我。 谢谢!

jQuery – 将多个选择器缓存到一个变量?

我需要对jQuery缓存进行一些澄清。 据我所知,这个: var $element = $(‘#element’); 如果我们不止一次地引用这个元素(通过引用我的意思是改变它,或者在它上面听一个事件),我们会受益。 它是否正确? 如果它是正确的,以下代码是否有意义,为什么? var $button = $(‘#submit, #save, #reset’); 我看到的是jQuery允许我这样做(因此将相同的好主题应用于所有3个按钮),但我无法在任何地方找到文档,这有助于以任何方式执行。

使用jQuery加载缓存脚本时处理404s

我想使用jQuery加载一个JS文件(原因超出了本文的范围)。 我想在可用的情况下使用缓存。 此外,我无法将全局ajax cache设置为true (再次出于范围之外的原因)。 这排除了我使用getScript方法所以,根据jQuery的网站,我做了以下内容: $(function() { options = { dataType: “script”, cache: true, // scheme-less URI. url: “//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min1.js”,//<— 404 success: function() { console.log("yes") }, error: function() { console.log("error") }, always: function() { console.log("always") }, statusCode: { 404: function() { console.log("404") } } }; var $d = jQuery.ajax(options); }); 现在这在所有情况下都能很好地工作,除非脚本请求返回404时,不会调用任何错误或失败方法。 我可以强制它通过应用超时来调用,但我不想。 为什么不调用error handling方法? 小提琴 […]

使缓存的内容无效,If-Modified Headers?

我有一个特殊的问题: PHP SCRIPT: // checks If-Modified-Since header (if nothing has changed) // Sends HTTP/1.0 304 Not Modified // Sends Cache-control: public, must-revalidate // exits // if NO If-Modified-Since or something has changed // builds content // Sends Last-Modified: [DATE TIME] // Sends Cache-control: public, must-revalidate // exits 我正在使用jQuery AJAX尝试按需刷新内容,我试图通过使用“beforeSend”参数更改过去的DATE TIME的If-Modified-Since标头来做到这一点。 这是目前发生的事情: 请求,200 OK响应新鲜内容 后续请求获得304响应,浏览器从缓存中获取 内容已在服务器上更改 […]

无法禁用jQuery缓存

更新 我发现它一定是缓存问题,但我无法关闭缓存。 这是我改变的脚本: jQuery.ajaxSetup({ // Disable caching of AJAX responses cache: false }); jQuery(“#button1”).click(function (e) { window.setInterval(refreshResult, 3000); }); function refreshResult() { jQuery(“#divResult”).load(“/Home/Refresh”); } 它每3秒更新一次网页的一部分。 清除Web浏览器缓存后,它只工作一次,之后无效 – 请求/ Home / Refresh没有3秒的间隔,数据从服务器发送,但网页上没有显示任何内容; 后续请求发送cookie ASP.NET_SessionId = wrkx1avgvzwozcn1frsrb2yh。 我正在使用ASP.NET MVC 2和c#。 我有jQuery的问题,这是我的网络应用程序的工作方式 在用户单击button1按钮后,包含表单和jQuery脚本的Search.aspx网页将数据发布到Home控制器中的Search()操作。 Search.aspx: <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage” %> Title Search model.Url) %> model.Url, new { […]