特點:
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...