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

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

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

Feb 20, 2025 am 10:05 AM

Common Pitfalls to Avoid when using HTML5 Application Cache

關(guān)鍵要點(diǎn)

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

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

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

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

這是一個(gè)示例清單文件:

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

NETWORK:
*

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

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

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

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

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

manifest.appcache
page2.css</code>

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

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

在 NETWORK 標(biāo)志下指定的 URL 基本上是“白名單”,也就是說,在此標(biāo)志下指定的文 件在有互聯(lián)網(wǎng)連接時(shí)始終從服務(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 的教程中都提到了這一點(diǎn),但在將 Web 應(yīng)用程序從開發(fā)服務(wù)器遷移到生產(chǎn)服務(wù)器時(shí),許多開發(fā)人員都會忽略這一點(diǎn)。

在 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>

避免因找不到文件而丟棄整個(gè)清單

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

例如:

<code>NETWORK:

/api</code>

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

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

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

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

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

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

<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í)行的注釋行。

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

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

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

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

相對 URL 相對于清單的 URL

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

如果您的應(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)站上運(yùn)行上述代碼可以讓你知道何時(shí)有 AppCache 清單的新更新可用。請注意,UPDATEREADY 是一個(gè)已定義的狀態(tài)。您甚至可以在 onUpdateReady() 函數(shù)中使用 swapCache() 方法來將舊的清單文件替換為新的清單文件:

<code>NETWORK:

/api</code>

結(jié)論

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

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

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

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

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

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

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

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

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

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

如何避免這些陷阱?

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

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

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

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

清單文件是一個(gè)簡單的文本文件,其中列出了要緩存的資源。它應(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。

如何更新緩存?

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

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

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

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

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

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

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

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的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中與日期和時(shí)間合作? 如何在JS中與日期和時(shí)間合作? Jul 01, 2025 am 01:27 AM

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

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

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

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

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

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

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