2

この例のように、店舗がある場合:

var myStore = Ext.create("Ext.data.Store", {
    model: "User",
    proxy: {
        type: "ajax",
        url : "/users.json",
        reader: {
            type: "json",
            rootProperty: "users"
        }
    },
    autoLoad: true
});

ファイルをアプリケーション キャッシュにキャッシュしたいので、次users.jsonのように追加しapp.jsonます。

    /**
     * Used to automatically generate cache.manifest (HTML 5 application cache manifest) file when you build
     */
    "appCache": {
        /**
         * List of items in the CACHE MANIFEST section
         */
        "cache": [
            "index.html",
            "users.json"
        ],
        /**
         * List of items in the NETWORK section
         */
        "network": [
            "*"
        ],
        /**
         * List of items in the FALLBACK section
         */
        "fallback": []
    },

Chrome 開発者ツールを見ると、.json ファイルが index.html と共にアプリケーション キャッシュに正しく追加されていることがわかります。

私はこれがオフラインで「うまくいく」ことを期待しています。残念ながらそうではありません.jsonファイルを要求しようとしますが、オフラインであるため機能せず、アプリケーションでそのデータを使用しなくなります.

アプリケーションの残りの部分は完全に正常に動作します。何か案は?

4

1 に答える 1

0

APIドキュメントを調べて、プロパティで少し試行錯誤することで解決策を見つけました。それはまったく明らかではありません。

問題は、.json ファイルの要求に追加の引数?dc=XXXXXXXとページング引数が追加されていたことです。プロキシに適用する必要がある追加のプロパティが 2 つありnoCacheますenablePagingParams。これでうまくいきました。

var myStore = Ext.create("Ext.data.Store", {
    model: "User",
    proxy: {
        type: "ajax",
        url : "/users.json",
        noCache: false,
        enablePagingParams: false,
        reader: {
            type: "json",
            rootProperty: "users"
        }
    },
    autoLoad: true
});

また、Loader エラーが発生し続けたため、ストアへの変更が正しく検出されるように、テスト用の cache.manifest ファイルのヘッダー コメントを更新する必要もありました。sencha CMD を使用して製品バージョンをビルドすると、アプリケーション キャッシュ ファイルが自動生成されるため、これは問題になりません。

注: app.js ファイルにも、広く文書化されている次のものが既にありました。

Ext.Loader.setConfig({
    disableCaching: false
});

これが誰かを助けることを願っています!

于 2013-08-27T16:09:43.927 に答える