我正在開發基於web視圖的移動應用程序和基於express.js的後端。從技術上講,它歸結爲嵌入式Chrome瀏覽器和HTTP端點。即使響應被緩存,「Cache-Control:only-if-cached」在脫機時也會失敗
在我的應用程序,我有一個儀表盤,我想它這樣的行爲:
- 從服務器獲取最新數據(服務器總是
200 OK
與有效載荷和Last-Modified
頭,或響應一個304 Not Modified
並沒有內容)- 如果瀏覽器沒有響應緩存尚未 - 做一個普通的請求與
Cache-Control: max-age=0
- 否則 - 永遠做一個條件請求與
If-Modified-Since
HEA明鏡
- 如果瀏覽器沒有響應緩存尚未 - 做一個普通的請求與
- 如果離線/網絡錯誤 - 回落到瀏覽器的緩存
- 做
Cache-Control: only-if-cached
請求,這是應該要麼產生緩存的響應或者如果沒有發現故障。
- 做
的問題是,當服務器發生故障,與Cache-Control: only-if-cached
後備要求總是失敗。尤其是,即使瀏覽器響應已緩存,它也會失敗(我知道它已緩存,因爲首先我得到一個200 OK
,並且即使收到304 Not Modified
(它沒有內容),第二次請求也會產生響應內容) 。那麼爲什麼它失敗呢?或者我應該如何構建與緩存相關的標題,使其如所描述的那樣工作?
我運行:
- 鉻的WebView V54
- github上/取出填充工具(但不應該真正的問題,因爲我在裸露的HTTP頭操作)
- express.js 4.14.0與ETag的殘疾人
其他說明:我大概可以使用勞務工,使儀表盤脫機工作,但相同的功能應該與普通的HTTP標頭和瀏覽器緩存行,我相信。