1

クエリ パラメータで指定されたページを返す pages.php という名前の php ファイルがあります。ユーザーがドロップダウンから番号を選択すると、次のような番号の ajax リクエストが pages.php に送信されます。

pages.php?page=1

ページ数は動的です。HTML5 の AppCache を使用してインデックス ページをキャッシュしていますが、ブラウザに ajax リクエストをキャッシュさせるにはどうすればよいですか。マニフェスト ファイルに pages.php を追加すると、ページのない応答がキャッシュされるだけです。ただし、ページ番号を使用してリクエストをキャッシュします。マニフェストファイルで次のようなことをしたい:

CACHE:
pages.php?page=*

ユーザーがオフラインになった場合に、以前に表示したページにアクセスできるようにしようとしています。AppCache は、Web サイトをオフライン対応にするのには適していないようです (静的リソースの読み込みを高速化するだけです)。他に使用すべき機能はありますか?

4

2 に答える 2

0

ローカル ストレージを使用してこれを解決しました (これを支援するために jquery localstorage プラグインを使用しました)。

プロセスは

  1. 通常はアンカーまたはリダイレクトから href するときにページから内部的に、代わりに関数を呼び出してリダイレクトします。この関数は、url からのパラメーターを localstorage に格納し、パラメーターなしで url にのみリダイレクトします。
  2. 受信対象ページで。localstorage からパラメーターを取得します。

リダイレクト コード

function redirectTo(url) {
    if (url.indexOf('?') === -1) {
        document.location = url;
    } else {
        var params = url.split('?')[1];
        $.localStorage.set("pageparams", params);
        document.location = url.split('?')[0];
    };
}

ターゲット ページ コード

var myParams = GetPageParamsAsJson();
var page = myParams.page;

function GetPageParamsAsJson() {
    return convertUrlParamsToJson($.localStorage.get('pageparams'));
}

function convertUrlParamsToJson(params) {
    if (params) {
        var json = '{"' + decodeURI(params).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"') + '"}';
        return JSON.parse(json);
    }
    return [];
}
于 2015-09-23T10:00:59.633 に答える
0

私は、次のような URI スキームによってアクセスされる動的ページをキャッシュする方法を理解するのに非常に苦労しました。

domain.com/admin/page/1
domain.com/admin/page/2
domain.com/admin/page/3

ここでの問題は、アクセスしない限り、appcache が個々の管理者/ページ/... をキャッシュしないことです。

私がしたことは、オフライン ページを使用して、ユーザーがオフラインでアクセスできるようにするページを表すことでした。

オフライン ページの JS は URI を検索し、それをスクレイピングして表示するページを見つけ、ユーザーが管理ダッシュボードにアクセスしたときにすべてのページ データが取り込まれた localStorage からデータをフェッチしてから、各ページへのリンクを表示します。個々のページ。

私は他のソリューションを受け入れていますが、単一の管理ページにアクセスするだけで、多数の個別のページをオフラインにすることができるのはこれだけです。

于 2013-02-14T05:29:48.910 に答える