国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
切勿在清單文件中列出清單文件
緩存頁面上未緩存的資源不會加載
始終在服務(wù)器的 .htaccess 文件中設(shè)置應(yīng)用程序類型清單
避免因找不到文件而丟棄整個清單
即使在線,數(shù)據(jù)也從 AppCache 加載
服務(wù)器上的更改不會發(fā)生,直到清單文件更新
清單文件必須與主機來自相同的來源提供服務(wù)
相對 URL 相對於清單的 URL
以編程方式檢查清單的狀態(tài)
結(jié)論
關(guān)於 HTML5 應(yīng)用程序緩存的常見問題解答 (FAQ)
什麼是 HTML5 應(yīng)用程序緩存,為什麼它很重要?
HTML5 應(yīng)用程序緩存是如何工作的?
使用 HTML5 應(yīng)用程序緩存時有哪些常見的陷阱?
如何避免這些陷阱?
HTML5 應(yīng)用程序緩存的未來是什麼?
如何創(chuàng)建清單文件?
如何將網(wǎng)頁與清單文件關(guān)聯(lián)?
如何更新緩存?
如果清單文件中列出的資源無法下載會發(fā)生什麼?
我可以將 HTML5 應(yīng)用程序緩存用於所有資源嗎?
首頁 web前端 js教程 使用HTML5應(yīng)用程序緩存時,常見的陷阱要避免

使用HTML5應(yīng)用程序緩存時,常見的陷阱要避免

Feb 20, 2025 am 10:05 AM

Common Pitfalls to Avoid when using HTML5 Application Cache

關(guān)鍵要點

  • 切勿將清單文件包含在應(yīng)用程序緩存清單中,這會造成循環(huán),幾乎無法通知您的網(wǎng)站有新的緩存文件可用。
  • 始終在服務(wù)器的 .htaccess 文件中設(shè)置應(yīng)用程序類型清單,以確保 AppCache 正確運行。如果未設(shè)置媒體類型,AppCache 將無法工作。
  • 請注意,如果清單文件中指定的單個文件都找不到或無法下載,則整個清單文件將被丟棄。這是 AppCache 的一種特殊行為。
  • 更新網(wǎng)站後,始終更新清單文件,否則用戶將看不到更改,只會看到以前緩存的數(shù)據(jù)。您可以在清單文件中註釋中更新版本號或日期,以強制用戶的 Web 瀏覽器下載清單文件的新版本。

HTML5 應(yīng)用程序緩存(也稱為 AppCache)近來成為 Web 開發(fā)人員關(guān)注的熱點話題。 AppCache 使您可以允許網(wǎng)站訪問者在離線時瀏覽您的網(wǎng)站。您甚至可以將網(wǎng)站的部分內(nèi)容(例如圖像、樣式表或 Web 字體)存儲在用戶計算機上的緩存中。這可以幫助您的網(wǎng)站加載速度更快,從而減少服務(wù)器的負載。

要使用 AppCache,您可以創(chuàng)建一個擴展名為“appcache”的清單文件,例如:manifest.appcache。在此文件中,您可以列出要緩存的所有文件。要在您的站點上啟用它,您必須在 html 元素的網(wǎng)頁上包含對該清單文件的引用,如下所示:

<html lang="en" manifest="manifest.appcache">

這是一個示例清單文件:

<code>CACHE MANIFEST
# 2015-01-23 v0.1
/style.css
/logo.gif
/script.js

NETWORK:
*

FALLBACK:
/server/ /fallback.html</code>

除了 AppCache 的好處之外,還有一些常見的陷阱應(yīng)該避免,以防止破壞用戶體驗並破壞您的應(yīng)用程序。

切勿在清單文件中列出清單文件

如果您在應(yīng)用程序緩存清單中包含清單文件本身,它會陷入某種循環(huán),幾乎無法通知您的網(wǎng)站有新的緩存文件可用,並且它應(yīng)該下載並使用新的清單文件而不是舊的清單文件。因此,務(wù)必小心不要犯以下錯誤:

<code>CACHE MANIFEST
# 2015-01-23 v0.1

manifest.appcache
page2.css</code>

緩存頁面上未緩存的資源不會加載

這是第一次使用 AppCache 時非常常見的錯誤。這就是清單文件中的 NETWORK 標(biāo)誌發(fā)揮作用的地方。清單文件的 NETWORK 部分指定 Web 應(yīng)用程序需要在線訪問的資源。

在 NETWORK 標(biāo)誌下指定的 URL 基本上是“白名單”,也就是說,在此標(biāo)誌下指定的文 件在有互聯(lián)網(wǎng)連接時始終從服務(wù)器加載。例如,以下代碼片段確保對加載包含在 /api/ 子樹中的資源的請求始終從網(wǎng)絡(luò)加載,而不是從緩存加載。

<html lang="en" manifest="manifest.appcache">

始終在服務(wù)器的 .htaccess 文件中設(shè)置應(yīng)用程序類型清單

清單文件應(yīng)始終在正確的媒體類型 text/cache-manifest 下提供服務(wù)。如果未設(shè)置媒體類型,則 AppCache 將無法工作。

它應(yīng)始終在生產(chǎn)服務(wù)器的 .htaccess 文件中配置。大多數(shù)講解 AppCache 的教程中都提到了這一點,但在將 Web 應(yīng)用程序從開發(fā)服務(wù)器遷移到生產(chǎn)服務(wù)器時,許多開發(fā)人員都會忽略這一點。

在 Apache 的 .htaccess 文件中輸入以下內(nèi)容:

<code>CACHE MANIFEST
# 2015-01-23 v0.1
/style.css
/logo.gif
/script.js

NETWORK:
*

FALLBACK:
/server/ /fallback.html</code>

如果您將應(yīng)用程序上傳到 Google App Engine,則可以通過將以下代碼段添加到 app.yaml 文件中來完成相同的任務(wù):

<code>CACHE MANIFEST
# 2015-01-23 v0.1

manifest.appcache
page2.css</code>

避免因找不到文件而丟棄整個清單

如果清單文件中指定的單個文件都找不到或無法下載,則整個清單文件將被丟棄。這是 AppCache 的一種奇怪的行為,在設(shè)計使用 AppCache 的 Web 應(yīng)用程序時應(yīng)牢記這一點。

例如:

<code>NETWORK:

/api</code>

如果刪除了 logo.gif,AppCache 將無法找到已刪除的圖像文件,因此清單文件中的任何內(nèi)容都不會執(zhí)行。

即使在線,數(shù)據(jù)也從 AppCache 加載

一旦您的 Web 瀏覽器保存了緩存清單文件,即使用戶已連接到互聯(lián)網(wǎng),文件也會從緩存清單本身加載。此功能有助於提高網(wǎng)站的加載速度,並有助於減少服務(wù)器負載。

服務(wù)器上的更改不會發(fā)生,直到清單文件更新

由於您從前一點知道即使用戶在線,數(shù)據(jù)也會從 AppCache 加載,因此對網(wǎng)站或服務(wù)器中文件的更改不會發(fā)生,直到清單文件更新。

更新網(wǎng)站後,您始終必須更新清單文件,否則您的用戶將永遠無法看到更改,他們只會看到以前緩存的數(shù)據(jù)。您可以在清單文件中註釋中更新版本號或日期,以強制用戶的 Web 瀏覽器下載清單文件的新版本。例如,如果在對網(wǎng)站進行更改之前,以下是您使用的清單文件:

<code>AddType text/cache-manifest .manifest</code>

它可以更改為類似於以下代碼塊的內(nèi)容,以便用戶的瀏覽器可以下載清單文件的新副本。

<code>- url: /public_html/(.*\.appcache)
  static_files: public_html/
  mime_type: text/cache-manifest
  upload: public_html/(.*\.appcache)</code>

請注意,以 # 開頭的行是不會執(zhí)行的註釋行。

清單文件必須與主機來自相同的來源提供服務(wù)

儘管清單文件可以保存對要從其他域緩存的資源的引用,但它應(yīng)從與主機頁面相同的來源提供給 Web 瀏覽器。如果不是這種情況,則清單文件將無法加載。例如,以下清單文件是正確的:

<code>CACHE MANIFEST
# 2015-01-23 v0.1
/style.css
/logo.gif
/script.js</code>

在這裡,我們指定了要存儲在用戶瀏覽器緩存中的內(nèi)容,該內(nèi)容是從另一個域引用的,這完全沒問題。

相對 URL 相對於清單的 URL

需要注意的一件重要事情是,您在清單中提到的相對 URL 相對於清單文件,而不是相對於您引用清單文件的文檔。如果清單和引用不在同一路徑中,則資源將無法加載,進而清單文件將無法加載。

如果您的應(yīng)用程序結(jié)構(gòu)如下所示:

<html lang="en" manifest="manifest.appcache">

那麼您的清單文件應(yīng)如下所示:

<code>CACHE MANIFEST
# 2015-01-23 v0.1
/style.css
/logo.gif
/script.js

NETWORK:
*

FALLBACK:
/server/ /fallback.html</code>

以編程方式檢查清單的狀態(tài)

您可以通過測試 window.applicationCache.status 以編程方式檢查您的應(yīng)用程序是否正在使用緩存清單的更新版本。這是一些示例代碼:

<code>CACHE MANIFEST
# 2015-01-23 v0.1

manifest.appcache
page2.css</code>

在網(wǎng)站上運行上述代碼可以讓你知道何時有 AppCache 清單的新更新可用。請注意,UPDATEREADY 是一個已定義的狀態(tài)。您甚至可以在 onUpdateReady() 函數(shù)中使用 swapCache() 方法來將舊的清單文件替換為新的清單文件:

<code>NETWORK:

/api</code>

結(jié)論

AppCache 是一項有用的技術(shù),但正如我們所看到的,在項目中實現(xiàn)它時應(yīng)謹慎。開發(fā)人員應(yīng)選擇性地選擇應(yīng)在清單文件中包含的內(nèi)容。理想情況下,清單文件應(yīng)包含靜態(tài)內(nèi)容,例如樣式表、腳本、Web 字體和圖像。但是,您始終是對清單文件中包含哪些內(nèi)容的最佳判斷者。 Appcache 是一把雙刃劍,因此在使用它時要小心!

上述內(nèi)容中的大部分內(nèi)容已在其他地方介紹過,還有一些其他要點。您可以查看以下資源以了解更多信息:

  • MDN 上的應(yīng)用程序緩存陷阱
  • Jake Archibald 的應(yīng)用程序緩存是個混蛋
  • Jake Archibald 的離線食譜

關(guān)於 HTML5 應(yīng)用程序緩存的常見問題解答 (FAQ)

什麼是 HTML5 應(yīng)用程序緩存,為什麼它很重要?

HTML5 應(yīng)用程序緩存 (AppCache) 是一項允許開發(fā)人員指定瀏覽器應(yīng)緩存哪些文件並使其可供用戶離線使用的功能。它之所以重要,是因為它可以通過減少服務(wù)器負載和節(jié)省帶寬來提高 Web 應(yīng)用程序的性能。它還允許應(yīng)用程序即使在用戶離線時也能運行,從而提供更好的用戶體驗。

HTML5 應(yīng)用程序緩存是如何工作的?

HTML5 應(yīng)用程序緩存的工作原理是使用清單文件。此文件列出了瀏覽器應(yīng)緩存以供離線使用的資源。當(dāng)用戶訪問網(wǎng)頁時,瀏覽器會檢查是否與其關(guān)聯(lián)了清單文件。如果是,瀏覽器將下載並存儲列出的資源。下次用戶訪問網(wǎng)頁時,瀏覽器將加載緩存的資源,而不是從服務(wù)器下載它們。

使用 HTML5 應(yīng)用程序緩存時有哪些常見的陷阱?

使用 HTML5 應(yīng)用程序緩存時,一些常見的陷阱包括:未正確更新清單文件,導(dǎo)致提供舊資源;未正確處理緩存清單回退部分,導(dǎo)致錯誤;以及未考慮緩存對用戶設(shè)備存儲的影響。

如何避免這些陷阱?

為避免這些陷阱,請在資源更改時始終正確更新清單文件。使用清單文件的 NETWORK 部分指定永遠不應(yīng)該緩存的資源。此外,請考慮用戶的設(shè)備存儲,並且只緩存必要的資源。

HTML5 應(yīng)用程序緩存的未來是什麼?

HTML5 應(yīng)用程序緩存正在被棄用,取而代之的是 Service Workers。 Service Workers 提供對緩存的更多控制,並且可以處理更複雜的場景。但是,目前並非所有瀏覽器都支持 Service Workers,因此了解和使用 HTML5 應(yīng)用程序緩存仍然很重要。

如何創(chuàng)建清單文件?

清單文件是一個簡單的文本文件,其中列出了要緩存的資源。它應(yīng)該以 MIME 類型“text/cache-manifest”提供服務(wù)。文件的首行應(yīng)為“CACHE MANIFEST”,後跟要緩存的資源。

如何將網(wǎng)頁與清單文件關(guān)聯(lián)?

要將網(wǎng)頁與清單文件關(guān)聯(lián),請將“manifest”屬性添加到網(wǎng)頁的“html”標(biāo)記中。 “manifest”屬性的值應(yīng)為清單文件的 URL。

如何更新緩存?

要更新緩存,請對清單文件進行更改。每次用戶訪問網(wǎng)頁時,瀏覽器都會檢查清單文件的更新。如果清單文件已更改,瀏覽器將下載並緩存新資源。

如果清單文件中列出的資源無法下載會發(fā)生什麼?

如果清單文件中列出的資源無法下載,則整個緩存更新過程將失敗。瀏覽器將繼續(xù)使用舊緩存。

我可以將 HTML5 應(yīng)用程序緩存用於所有資源嗎?

雖然從技術(shù)上講您可以將 HTML5 應(yīng)用程序緩存用於所有資源,但不建議這樣做。緩存過多的資源可能會填滿用戶的設(shè)備存儲並對性能產(chǎn)生負面影響。最好只緩存必要的資源。

以上是使用HTML5應(yīng)用程序緩存時,常見的陷阱要避免的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Java vs. JavaScript:清除混亂 Java vs. JavaScript:清除混亂 Jun 20, 2025 am 12:27 AM

Java和JavaScript是不同的編程語言,各自適用於不同的應(yīng)用場景。 Java用於大型企業(yè)和移動應(yīng)用開發(fā),而JavaScript主要用於網(wǎng)頁開發(fā)。

JavaScript評論:簡短說明 JavaScript評論:簡短說明 Jun 19, 2025 am 12:40 AM

JavascriptconcommentsenceenceEncorenceEnterential gransimenting,reading and guidingCodeeXecution.1)單inecommentsareusedforquickexplanations.2)多l(xiāng)inecommentsexplaincomplexlogicorprovideDocumentation.3)

如何在JS中與日期和時間合作? 如何在JS中與日期和時間合作? Jul 01, 2025 am 01:27 AM

JavaScript中的日期和時間處理需注意以下幾點:1.創(chuàng)建Date對像有多種方式,推薦使用ISO格式字符串以保證兼容性;2.獲取和設(shè)置時間信息可用get和set方法,注意月份從0開始;3.手動格式化日期需拼接字符串,也可使用第三方庫;4.處理時區(qū)問題建議使用支持時區(qū)的庫,如Luxon。掌握這些要點能有效避免常見錯誤。

為什麼要將標(biāo)籤放在的底部? 為什麼要將標(biāo)籤放在的底部? Jul 02, 2025 am 01:22 AM

PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

JavaScript與Java:開發(fā)人員的全面比較 JavaScript與Java:開發(fā)人員的全面比較 Jun 20, 2025 am 12:21 AM

JavaScriptIspreferredforredforwebdevelverment,而Javaisbetterforlarge-ScalebackendsystystemsandSandAndRoidApps.1)JavascriptexcelcelsincreatingInteractiveWebexperienceswebexperienceswithitswithitsdynamicnnamicnnamicnnamicnnamicnemicnemicnemicnemicnemicnemicnemicnemicnddommanipulation.2)

JavaScript:探索用於高效編碼的數(shù)據(jù)類型 JavaScript:探索用於高效編碼的數(shù)據(jù)類型 Jun 20, 2025 am 12:46 AM

javascripthassevenfundaMentalDatatypes:數(shù)字,弦,布爾值,未定義,null,object和symbol.1)numberSeadUble-eaduble-ecisionFormat,forwidevaluerangesbutbecautious.2)

什麼是在DOM中冒泡和捕獲的事件? 什麼是在DOM中冒泡和捕獲的事件? Jul 02, 2025 am 01:19 AM

事件捕獲和冒泡是DOM中事件傳播的兩個階段,捕獲是從頂層向下到目標(biāo)元素,冒泡是從目標(biāo)元素向上傳播到頂層。 1.事件捕獲通過addEventListener的useCapture參數(shù)設(shè)為true實現(xiàn);2.事件冒泡是默認行為,useCapture設(shè)為false或省略;3.可使用event.stopPropagation()阻止事件傳播;4.冒泡支持事件委託,提高動態(tài)內(nèi)容處理效率;5.捕獲可用於提前攔截事件,如日誌記錄或錯誤處理。了解這兩個階段有助於精確控制JavaScript響應(yīng)用戶操作的時機和方式。

Java和JavaScript有什麼區(qū)別? Java和JavaScript有什麼區(qū)別? Jun 17, 2025 am 09:17 AM

Java和JavaScript是不同的編程語言。 1.Java是靜態(tài)類型、編譯型語言,適用於企業(yè)應(yīng)用和大型系統(tǒng)。 2.JavaScript是動態(tài)類型、解釋型語言,主要用於網(wǎng)頁交互和前端開發(fā)。

See all articles