jQuery Ajax GET请求不会缓存

时间:2014-11-14 20:42:23

标签: javascript jquery ajax caching

我正在尝试离线我的应用程序。我发了几个GET请求将模块加载到应用程序中。我已将这些文件添加到缓存清单中,因此请求仍然有效。

function loadReportDiv(ajaxUrl) {
    $.ajax({
        type : "GET",
        cache: true,
        url : ajaxUrl,
        success : function(data) {
            console.log("REPORTS: " + ajaxUrl + "... load complete");
            $("#reports_menu_wrapper").after(data);
        },
        error : function(jqXHR, textStatus, errorThrown) {
            console.log(jqXHR);
            console.log(textStatus);
            console.log(errorThrown);
        }
    });
}
loadReportDiv("sales_reports.html");
loadReportDiv("call_reports.html");

我在Chrome中运行应用并将网络设置为"离线"在我的设备模拟器中(模拟iPad)。我用ajax加载的文件有自己的javascript文件,这些文件在.html文件中引用。当我尝试加载sales_reports.htmlcall_reports.html时,Chrome无法加载文件并吐出它尝试获取的网址,即:js/call_reports.js?_=1415997141636

附加?_=[timestamp]到文件路径,正在破坏我的应用程序,我似乎无法阻止它发生。如您所见,我将我的ajax请求的缓存模式设置为true,以防止此行为。

编辑:

我使用的jQuery版本是1.11.1。

我尝试用vanilla javascript编写ajax请求并遇到同样的问题。

function loadReportDiv(ajaxUrl) {
  var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange=function(){
    if (xmlhttp.readyState==4 && xmlhttp.status==200){
        console.log("REPORTS: " + ajaxUrl + "... load complete");
        $("#reports_menu_wrapper").after(xmlhttp.responseText);
    }
  }
  xmlhttp.open("GET", ajaxUrl);
  xmlhttp.send();       
}

我的jQuery文件第9631行引发了错误:     //发送请求     //这可能引发一个实际的异常     //在jQuery.ajax中处理(所以没有在这里试试/ catch)     xhr.send((options.hasContent&& options.data)|| null);

但它仍然将时间戳附加到请求网址。

再一次,任何帮助将不胜感激!感谢。

1 个答案:

答案 0 :(得分:0)

我终于明白了!

我的应用程序中有一堆.js库,我想其中一个方法就是强制ajax请求不被缓存。我已将此添加到我的index.html文件中以反击该行为。

    <script>
        $(function(){
            $.ajaxSetup({
                cache: true
            });
        });
    </script>

现在一切正常!