在示例演示應用程序中,我使用React Native進行網絡調用。 React Native使用NSURLSession
和NSURLRequestUseProtocolCachePolicy
作爲默認緩存策略。當網絡調用時,由服務返回的響應包含這些高速緩存控制標題:通過React Native使用必須重新驗證NSURLSession
public, max-age=10, must-revalidate
我能注意到那是什麼NSURLSession
不兌現10
秒如果max-revalidate
存在。相反,如果後者在10
秒內發生新的網絡呼叫時不存在,則返回高速緩存響應,否則將進行新的呼叫。
基於14.9.4 Cache Revalidation and Reload Controls部分,這不應該是預期的行爲,但也許我錯了。
因爲高速緩衝存儲器可被配置爲忽略服務器的指定 期滿時間,並且因爲客戶端請求可以包括一個MAX-陳舊 指令(其具有類似的效果),該協議還包括一個 機構,用於原始服務器要求在任何後續使用中重新驗證緩存 條目。當高速緩存接收到的響應中必須重新生效指令爲 時,該高速緩存不應使用 條目,該條目在變得陳舊後不響應後續請求 ,而無需先用源服務器對其進行重新驗證。 (即緩存 必須每次做一個終端到終端的重新確認,如果僅僅基於 原始服務器的過期或max-age的值,緩存的響應是 陳舊。)
我發現關於這個問題的一個有用的討論:HTTP Cache Control max-age, must-revalidate。根據討論,似乎協議是有點
這裏含義模糊,但在實踐中我發現,必重新驗證 意味着無論最大年齡的,必須重新驗證。
一個很奇怪的事情是,如果我做同樣與Android,同時使用max-age
和must-revalidate
的行爲是正確的。在10
秒後,將發出新的請求。在10
秒內沒有請求。
任何線索?