自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

HTML 5緩存機制:Cache Manifest配置實例

開發(fā) 前端
作為一個Web開發(fā)相關(guān)的人員,都不會少聽到、看到Cache這個詞,Cache Manifest是HTML 5的一種緩存機制。它可以通過一個.manifest文件來配置需要緩存的或者一定要保持聯(lián)網(wǎng)緩存的文件。

Cache Manifest是HTML 5的一種緩存機制,文章作者直接用博客當(dāng)測試環(huán)境,雖然應(yīng)用起來非常簡單,但效果卻出奇的好。緩存后的速度,簡直是驚人的快。像Yslow顯示,打開一個緩存過的頁面,只要0.729秒,比不緩存的差不多快了10倍。

一、Cache Manifest基礎(chǔ)知識

作為一個Web開發(fā)相關(guān)的人員,都不會少聽到、看到Cache這個詞。是的,上面也已經(jīng)說了,它是一種緩存的機制。它可以通過一個.manifest文件來配置需要緩存的或者一定要保持聯(lián)網(wǎng)緩存的文件。而重點就是這個.manifest文件,這里進行了簡單的整理:

◆MIME TYPE:text/cache-manifest

◆需要由你創(chuàng)建的:NAME.manifest

◆作用:主要是配置需要緩存的文件

二、如何實現(xiàn)

實現(xiàn)起來倒是非常簡單(當(dāng)然,這也是有問題的,這個我們后面講解決方案),實現(xiàn)步驟如下:

1.在服務(wù)器上添加MIME TYPE支

比如 Apache 中可在 .htaccess 中添加:

  1. AddType text/cache-manifest manifest 

2.創(chuàng)建 NAME.manifest:
 
其中***行的CACHE MANIFEST標(biāo)識是一定要有的,而CACHE/NETWORK/FACKBACK 都是可選的。如果沒有寫標(biāo)識,則默認(rèn)緩存,Cache就不用說了,緩存;NETWORK指不想緩存的頁面,比如登陸頁等;FALLBACK 是指當(dāng)沒有響應(yīng)時的替代方案,比如我想請求某個頁面,但這個頁面的服務(wù)器掛了,那么,我可以顯示另外一個指定的頁面,文件結(jié)構(gòu)如下:

  1. CACHE MANIFEST  
  2.  
  3. # VERSION 0.3  
  4.  
  5. # 直接緩存的文件  
  6. CACHE:  
  7. abc.html  
  8. images/sofish.png  
  9. js/main.js  
  10. css/layout.css  
  11.  
  12. # 需要在時間在線的文件  
  13. NETWORK:  
  14. /wp-admin/  
  15.  
  16. # 替代方案  
  17. FALLBACK:  
  18. /ajax/ ajax.html 

至于如何更新這個配置文件?只要改變文件的內(nèi)容即可,上面的# VERSION 0.3其實只是一行注釋,但改變文件可以重新緩存,這樣寫上版本號,想更新的時候修改版本號來重新緩存,是一種比較推薦的方法,甚至可以是***實踐。

3.給<html>標(biāo)簽加manifest屬性

  1. <html manifest="path/to/NAME.manifest"> 

是的,就是如此簡單,相信你花上30分鐘也就了解了,而且能夠快速的應(yīng)用到工作中。

三、Cache Manifest 存在的問題

經(jīng)過上面一整,速度明顯快了許多,幫忙測試的人也小震驚了一下,只是,還是存在一些問題,看一下,然后我們嘗試解決:

1.自動緩存引用了manifest文件的頁面

即使在 NETWORK 中指定 "*"(所有的頁面都)使用網(wǎng)絡(luò),還是不能解決它自動緩存當(dāng)前頁面。這使得這個頁面在 manifest 沒有變更的情況下,會一直以"類靜態(tài)"存在。比如,你后臺更新了一篇文章,這個動態(tài)的首頁,還是像***次緩存的時候一樣,沒有變。這對于靜態(tài)頁面還好,但應(yīng)用在一個動態(tài)系統(tǒng)就很麻煩了,因為你的內(nèi)容是時時要更新的。

2.Firefox彈出提示信息

可能是習(xí)慣了彈窗警告之類的,一不小心,用戶還以為是網(wǎng)站被人掛馬呢,想把不干凈的東西存儲到他的電腦。

四、解決方案

(一)關(guān)于自動緩存當(dāng)前頁面

在《Pro HTML5 Programming》有這樣一句話:這并不是Bug,而是機制的需要。雖然說這樣會讓頁面載入更快,但對于動態(tài)頁面來說就是惡心了。至少應(yīng)該有一種讓用戶選擇是否緩存當(dāng)前頁的配置方案(或者說是一個開關(guān))。不過,這是暫時不能解決的,畢竟這還只是一個Draft,我們要用,就應(yīng)該找一個合適的方案。

我的想法是,看看大家有沒有更好的辦法。結(jié)果,查了一下,無果。新的東西,幾乎所有文章說的都只是我上面說的那個如何去寫一個manifest文件,看來還是沒辦法偷懶。然后,便開始想:

◆一定不要緩存動態(tài)的頁面,當(dāng)前頁一定不能引用 manifest文件。

◆能不能從其他頁面先載入緩存?

那么,如果有解決方案的話,解決方法應(yīng)該是:

◆不在當(dāng)前頁面引用manifest。

◆在用戶打開頁面之前,需要有一個頁面來實現(xiàn)緩存機制。

如果這樣,那么為何不試一下iframe來引入一個擁有manifest的靜態(tài)文件?但用 iframe 還能會緩存到文件?經(jīng)過一翻測試,Google Chrome的調(diào)試工具給了答案:結(jié)果很不錯,成功緩存。做法是這樣的,新建一個cache.html文件來當(dāng)做為當(dāng)前頁面的代理,內(nèi)容如下:

  1. <!DOCTYPE html> 
  2. <html  manifest="http://www.happinesz.cn/sofished.manifest"> 
  3. <head> 
  4.         <meta charset=utf-8 /> 
  5.         <title>cache</title> 
  6. </head> 
  7. <body> 
  8. hi sofish!  
  9. </body> 
  10. </html> 

然后,在每個頁面通過iframe來引用這個靜態(tài)文件,以達到我們不緩存當(dāng)面頁面,只緩存我們希望緩存文件的目的。

(二)關(guān)于 Firefox 彈出警告問題

這個,瀏覽器默認(rèn)的,瀏覽器廠商的目的是為用戶的安全著想,我們暫時也改變不了。其實,也不會有太大的影響,我也沒有好好去想。

五、總結(jié)

測試下來,其實跟緩存當(dāng)前頁面還是有差別的,畢竟像站外的鏈接,特別是gravatar總要請求這么多圖片,這點就又多了一點時間了。這現(xiàn)象主要出現(xiàn)在 Firefox 下,而 Webkit 而表示非常棒,速度幾乎和緩存當(dāng)前面一樣,第二次打開的頁面,都是瞬間響應(yīng)的,效果非常不錯。

原文鏈接:http://www.happinesz.cn/archives/1449/

【編輯推薦】

  1. 現(xiàn)在如何在你的站點上使用HTML 5
  2. 為網(wǎng)站提速 探秘HTML 5鏈接預(yù)取功能
  3. HTML 5 Web Sockets應(yīng)用初探
  4. HTML 5視頻標(biāo)簽全屬性詳解
  5. HTML 5 File API應(yīng)用實例
責(zé)任編輯:王曉東 來源: happinesz.cn
相關(guān)推薦

2015-02-05 10:11:44

HTML5Application

2014-11-04 10:34:27

JavaCache

2017-10-12 15:58:10

網(wǎng)站HTML5Manifest

2025-03-10 07:00:00

后端緩存Cache

2010-09-03 08:58:01

HTML 5

2009-09-22 10:50:04

Hibernate c

2011-07-26 10:46:04

HTML 5

2018-07-14 21:59:57

緩存數(shù)據(jù)庫數(shù)據(jù)

2012-09-04 09:23:45

HTML5消息傳輸傳輸機制

2021-06-29 19:26:29

緩存Spring CachSpring

2023-05-05 18:38:33

多級緩存Caffeine開發(fā)

2009-06-17 15:43:03

Hibernate緩存

2023-02-24 16:46:25

Glide緩存機制

2020-03-03 15:40:51

開發(fā)技能代碼

2013-08-15 09:14:55

2009-11-09 17:55:13

WCF緩存

2016-03-09 09:54:47

Python開發(fā)緩存機制

2010-10-13 16:44:10

MySQL查詢緩存機制

2025-01-02 14:50:34

MyBatis開發(fā)緩存

2015-12-16 12:40:32

H5緩存機制移動
點贊
收藏

51CTO技術(shù)棧公眾號