2016-12-06 30 views
3

我正在開發基於web視圖的移動應用程序和基於express.js的後端。從技術上講,它歸結爲嵌入式Chrome瀏覽器和HTTP端點。即使響應被緩存,「Cache-Control:only-if-cached」在脫機時也會失敗

在我的應用程序,我有一個儀表盤,我想它這樣的行爲:

  1. 從服務器獲取最新數據(服務器總是200 OK與有效載荷和Last-Modified頭,或響應一個304 Not Modified並沒有內容)
    • 如果瀏覽器沒有響應緩存尚未 - 做一個普通的請求與Cache-Control: max-age=0
    • 否則 - 永遠做一個條件請求與If-Modified-Since HEA明鏡
  2. 如果離線/網絡錯誤 - 回落到瀏覽器的緩存
    • 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標頭和瀏覽器緩存行,我相信。

回答

0

是的,這應該可以用HTTP的定義的緩存行爲,但只有當瀏覽器支持該規範。

在Chromium的來源中,only-if-cached似乎只出現在第三方模塊(only-if-cachedpackage:chromium)中。這表明Chrome可能不支持標題。

相關問題