1

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

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

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

有任何想法吗?

4

1 回答 1

0

我找到了解决这个问题的方法......

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

var CustomXMLHTTPResponse =
{
    ResponseHeadersArr: new Array(),

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

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

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

于 2012-10-15T10:01:23.533 回答