離線應用Application Cache詳解

2022-04-29 10:00:11 字數 2384 閱讀 1925

特點:

1.離線可訪問            - 沒有網路仍可訪問整個應用

2.很小的伺服器負載  - 快取在本地,不需要到伺服器請求

3.高速                     - 載入幾乎不需要時間

典型應用場景:

1.網頁遊戲

2.單頁面應用

傳統瀏覽器快取(browser caching)

1.快取協商 last-modified, etag

請求資源時去伺服器詢問資源有沒有修改過,如果沒有就返回304使用快取的資源,更改過就返回新資源。

快取協商過程:

1.伺服器返回帶有類似last-modified:mon, 04 feb 2013 11:21:50 gmt的響應。

2.瀏覽器傳送帶有類似if-modified-since:mon, 04 feb 2013 11:21:50 gmt的請求。

3.伺服器端根據last-modified

和if-modified-since

判斷瀏覽器快取是否過期並傳送相對應的響應。

etag的工作原理與last-midified類似,不同點在於etag的值是使用者可自定義的

2.徹底快取 cache-control, expires

意思是在快取失效之前不再和伺服器請求

瀏覽器總是優先使用cache-control,如果沒有cache-control才考慮expires

與傳統瀏覽器快取的區別:

1.離線快取可以在離線狀態下使用,而瀏覽器快取不可以

2.離線快取可以手動更新,而瀏覽器快取不可以

3.離線快取可以指定快取檔案,瀏覽器快取不可以

4.離線快取應用於整個web,瀏覽器快取只快取乙個頁面

具體實現:

1. 快取清單檔案manifest,告訴瀏覽器快取哪些檔案,結構如下:

*2. 在html標籤中引用manifest檔案

manifest="./cache.manifest">

位址可以是相對或絕對的,但要同源。

3. 讓伺服器支援,以apache為例

在httpd.conf中搜mime_module,並在裡面新增:

addtype text/cache-manifest .manifest

.manifest為副檔名,可更改。

現在瀏覽器應該可以快取manifest中的檔案了!!

4. 處理事件

其中,swapcache方法將會用新載入的資源替換離線快取資料,但此時瀏覽器依舊用老的快取,location.reload()重新整理後才真正應用了新的快取,更新才真正完成。

5.快取狀態

6. 更新

注意事項:

1. 只有更新manifest檔案本身才會導致快取更新,更改裡面列出的檔案不會進行快取的更新!

2. manifest中列出的檔案,只要有乙個載入失敗,就會導致整個快取過程失敗

3. 伺服器端設定的mime-type一定要正確,否則不會快取任何檔案

4. 快取大小都是5mb

5. 引用manifest檔案的html檔案會被自動快取,所以manifest檔案中不必列出該檔案,但列出也不會產生任何問題

6. manifest檔案fallback

區位址一定要是相對位址

7. 刪除manifest檔案瀏覽器將清除離線快取

8. 沒有引用manifest檔案的頁面,也可以從快取中載入資源

9. 每次更新,將載入並快取manifest中列出的所有資源,而不是發生改變的部分

Android使用Application總結

第二步 配置全域性的context 第三步 使用,使用的時候用的時候根據類的名稱訪問context void onconfigurationchanged configuration newconfig void oncreate 這裡才是真正的入口點。void onlowmemory void o...

Application共享資料

session物件 實現會話級別的資料共享。public sealed 對於應用程式狀態管理物件來說,由於所有的請求都可能需要訪問這個物件,為了解決併發訪問的問題,同時還提供了執行緒的同步機制,通過鎖來同步對於這個集合的訪問。方法 屬性 3 global.asax檔案 示例 global.asax ...

sharding在application中的配置

server.port 8080 駝峰轉換 mybatis.configuration.map underscore to camel case true 開啟sharding日誌 spring.shardingsphere.props.sql.show true 允許bean覆蓋,防止bean和s...