Jquery使用本地存储缓存Ajax XMLHttpResponse

时间:2012-10-14 10:08:30

标签: jquery ajax caching xmlhttprequest local-storage

我有一个需要升级的Jquery网站,以提供本地存储缓存功能,如果有缓存的响应HTML,Target会先进行每个Ajax请求检查,然后它不会调用服务器端,而是从中获取数据缓存而不是。 缓存和显示缓存中的数据等等一切正常。

将我的缓存核心应用于严重依赖于XML HTTP响应标头的网站时出现了我的问题;看来当我尝试在使用JSON.Stringify()序列化后,尝试缓存从ajax调用返回的XMLHttpResponse对象时,从JSON.Parse()返回的desearialized对象不包含响应标题!

我必须从包含所有先前添加的标头的缓存中返回XMLHttpResponse对象,因为所有网站都将其作为XMLHttpResponse的对象处理。

任何想法?

1 个答案:

答案 0 :(得分:0)

我找到了解决这个问题的工作......

由于所有站点都需要XMLHttpResponse对象来处理,我构建了类似Custom XMLHttpResponse类的东西,这个类包含这些站点中使用的所有变量/函数,如下例所示:

var CustomXMLHTTPResponse =
{
    ResponseHeadersArr: new Array(),

    getResponseHeader: function (Key) {
        return this.ResponseHeadersArr[Key];
    }
.
.
}

而不是缓存整个对象,我只是从原始XMLHttpResponse对象缓存我需要的东西,实际上我在这种情况下缓存所有响应头;当我从缓存中获取这些数据时,我构建了一个新的CustomXMLHTTPResponse对象,然后用从缓存中获取的数据填充它,最后我传递了CustomXMLHTTPResponse对象。

因此,当调用CustomXMLHTTPResponse类中的函数getResponseHeader()时,它将与原始XMLHTTPResponse类中的getResponseHeader()行为相同。