1

ローカルストレージのキャッシュ機能を提供するためにアップグレードする必要のあるJqueryWebサイトがあります。Targetは、キャッシュされた応答HTMLがあるかどうかを最初にすべてのAjaxリクエストでチェックし、サーバー側を呼び出さず、代わりにキャッシュからデータを取得していました。キャッシュやキャッシュからのデータの表示など、すべて問題ありません。

XML HTTP応答ヘッダーに大きく依存するサイトにキャッシュコアを適用すると、問題が発生しました。もちろんJSON.Stringify()を使用してシリアル化した後、ajax呼び出しから返されたXMLHttpResponseオブジェクトをキャッシュしようとすると、JSON.Parse()から返されたdesearializedオブジェクトに応答ヘッダーが含まれていないようです。

すべてのサイトが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 に答える