0

オフラインで利用できるようにしたい動的ページがあります。これを行うには、HTML5 のアプリケーション キャッシュを使用したいと思います。問題は、ページのすべてのリソース (JavaScript および CSS) が動的であるため、事前に把握していないことです。

次のような manifest.appcache ファイルがあります。

CACHE MANIFEST
#1330475607
CACHE:
/

しかし、これはページの HTML のみをキャッシュし、ページの残りのリソースはキャッシュしないようです。このようなことをする方法はありますか?

そうでない場合、JavaScript を使用してプログラムでキャッシュを設定することは可能でしょうか (link タグと script タグをループできると思います)。

4

3 に答える 3

2

キャッシュ マニフェスト ファイルのキャッシュ セクションでは、すべてのリソース ファイルを個別に指定する必要があります。

そのため、キャッシュ マニフェスト ファイルをページと共に動的に生成する必要があります。このようにして、ページが変更されるたびにマニフェスト ファイルも更新されます。

マニフェスト ファイル内のリソースは、ページと共にダウンロードされます。ほとんどの場合、これらのダウンロードが完了した後、ページの JavaScript が実行されます。したがって、javascript でキャッシュ マニフェストを設定する方法はありません。

于 2012-03-11T14:10:14.530 に答える
0

古い学校(安らかではない)に行き、URLパラメーターを使用する場合、これを行うことができます。

ローカル ストレージを使用してこれを解決しました (これを支援するために 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:07:37.053 に答える
0

私の知る限り、キャッシュ セクションではワイルドカードを使用できません (ただし、フェイルバック セクションでは機能します)。マニフェストは JavaScript ファイルの前に読み込まれるため、JavaScript でループすることもできません。

すべての js/css を 1 つのファイルにまとめたサーバー サイド スクリプトを使用することはできますか?

于 2012-03-05T15:32:01.157 に答える