jquery和jsp - 仍然保存在缓存甚至缓存中:false和response.setHeader(" Cache-Control"," no-cache")

时间:2012-11-12 01:54:12

标签: jquery ajax jsp caching

我有问题。我仍然可以看到,在将此代码放在我的jsp上后,我的缓存仍在增加。

<% response.setHeader("Cache-Control", "no-cache"); %>

并在我的javascript / jquery中驻留在同一个jsp上:

function waitForMsg() {
    $.ajax({
        type: "GET",
        url : contextPath + "/groupChat",
        async: true,
        cache: false,

        success: function (data) {
            $("#divChatMessageTable").load(contextPath + "/groupChat/message");
            setTimeout(waitForMsg, 1000);   
        },
        error: function(XMLHttpRequest, textStatus, errorThrown){
            setTimeout(waitForMsg, 15000);  
        }
    });
    if ($("#divChatMessageTable").height() > tableHeight) {
        scrollToBottomChat ();
        tableHeight = $("#divChatMessageTable").height();
    }
}

我在jquery中设置了cache:false

是的,我正在使用Firefox。

请帮忙。

2 个答案:

答案 0 :(得分:1)

您可以摆脱初始的ajax调用,只需保持load调用(也是ajax)。下面的一个区别是为load方法添加成功回调,因此在插入新内容之前,您不会测试新内容的高度

function waitForMsg() {

    $("#divChatMessageTable").load(contextPath + "/groupChat/message", function({ 
        /* new content now exists*/
        if($("#divChatMessageTable").height() > tableHeight) {
            scrollToBottomChat();
            tableHeight = $("#divChatMessageTable").height();
        }
        setTimeout(waitForMsg, 1000);    
    });


}

load http://api.jquery.com/load/

的API引用

答案 1 :(得分:0)

我通过添加no-store, must-revalidate解决了这个问题。

代码:

<% response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); %>