2016-11-16 6 views
3

I knowの304応答ステータスコードで効率的に作業します。私の問題は、リストが本当に巨大で(> 4 MBの圧縮されていない)、JSONに変換するのがかなり長い(デスクトップでは70ミリ秒、問題のあるAndroidではずっと長い)ということです。サーバが304 NOT MODIFIEDを返すとき、ブラウザはそれを透過的に処理し、クライアントコードがそれを直接使用する方法はないので、

ここでは、HTTPリクエストを行う必要があるため、angularjsキャッシュは使用しません。私は部分的なリストで作業したくありません。

E-Tagヘッダーを使用して、defaultHttpResponseTransformにハッキングしていると思いますが、このオーバーヘッドを回避する標準的な方法があるのだろうかと思います。

+0

私の答えに記載されているようにインターセプタを作成しようとしましたか? – tomepejo

答えて

1

コードのヘッダーにあるE-tagを比較するだけで、$cacheとブラウザキャッシュを組み合わせることができます。ブラウザが常に200個のステータスコードをシミュレートするので、304ステータスを捕らえることはできません。この種の問題を扱うライブラリがありますhttps://www.npmjs.com/package/angular-http-etag。しかし、jsonを解析する際の問題は、localStorageもjsonを文字列にシリアライズするので、回避することはできません。そうすれば、etherメソッドを解析する必要があります。私の提案は、より小さなチャンクにjsonを分割し、必要に応じてそれを要求することです

+0

いいね!同じデータを頻繁にチェックして、非永続キャッシュ(単純なjsオブジェクト)を使用する予定があるので、シリアライズを避けることができます。実際、 'localStorage'はあまりにも制限されています(5 MB程度)。分割は現在選択肢ではありません。 – maaartinus

+0

サービスワーカーhttps://mobiforge.com/design-development/taking-web-offline-service-workersを試すことができます。 MBの制限は50です。ファイルを分割できない場合は、圧縮してください。 Jsonファイルは非常に圧縮可能です。 tar.gzで圧縮するだけで、ファイルのサイズを半分に分割できます。 https://www.npmjs.com/package/tar.gz。また、ファイル内で反復可能なデータを見つけて、その文字列のコピーを1つだけ保持し、その文字列の参照をファイル内で置き換えることによって手動で圧縮しようとします – Kliment

関連する問題