私はWebビューベースのモバイルアプリケーションとexpress.jsベースのバックエンドを開発しています。技術的には、埋め込まれたクロムブラウザとHTTPエンドポイントがあります。私のアプリでレスポンスがキャッシュされていてもオフラインのときに「Cache-Control:only-if-cached」が失敗する
、私はダッシュボードを持っている、と私はそれがこのように動作したいと思います:
- は、サーバが常にペイロードと
Last-Modified
ヘッダで200 OK
で応答(サーバーから最新のデータを取得、または304 Not Modified
なしコンテンツ)- ブラウザが応答がまだキャッシュされていない場合は - そう
Cache-Control: max-age=0
- と通常のリクエストを行う - 常に
If-Modified-Since
HEAとの条件付きリクエストを行いますキャッシュされた応答が得られるか、見つからない場合に失敗するかと思われCache-Control: only-if-cached
要求を行うバックブラウザのキャッシュ- にフォール - オフライン/ネットワークエラーが場合
- DER。
- ブラウザが応答がまだキャッシュされていない場合は - そう
問題は、サーバーがダウンしているとき、Cache-Control: only-if-cached
とフォールバック要求は常に失敗した、ということです。特に、ブラウザが応答をキャッシュしていても失敗します(最初に私が200 OK
を取得してキャッシュされていることがわかります)。また、コンテンツがない304 Not Modified
を受け取っても2番目の要求で応答コンテンツが得られます。 。それでなぜ失敗するのですか?または、キャッシュ関連のヘッダーをどのように構成して、説明どおりに動作させる必要がありますか?
私が実行している:
- クロームのWebView V54
- githubの/ポリフィルをフェッチ(私は裸のHTTPヘッダーに動作してるようそれは本当に、重要ではありません)
- express.jsを4.14.0 ETagsを無効にしました
その他の注意:ダッシュボードはオフラインで動作するようにサービスエンジニアを使用する可能性がありますが、プレーンなHTTPヘッダーとブラウザキャッシュで同じ機能を実行する必要があります。