[英]How can I create a custom offline page using HTML5 appcache, but also keep my 404 error pages?
我正在嘗試使用HTML5 appcache 功能為我的網站提供自定義的“斷開連接”頁面。 我有一個名為offline.html
的頁面,我想向在瀏覽器離線時嘗試訪問站點根頁面( /
)的用戶顯示該頁面,並且我想關閉所有其他 appcache 功能。 我不希望我網站上的任何頁面緩存在 appcache 中(當然, offline.html
和必要的offline_cache.html
除外)。
我正在使用此解決方法來防止我的主頁被緩存為母版頁,並且使用下面的代碼,我覺得我幾乎可以正常工作了。
我的index.html
使用離線緩存助手加載 iframe:
<iframe style="display: none;" src="offline_cache.html"></iframe>
offline_cache.html
文件加載site.appcache
:
<!DOCTYPE HTML>
<html lang="en" class="no-js" manifest="site.appcache">
<head>
<meta charset="utf-8">
<title>Manifest Initiation Page</title>
</head>
<body></body>
</html>
我的site.appcache
文件使用FALLBACK
指令為根頁面提供離線替代方案(現在它匹配所有內容,但我希望它僅匹配根頁面):
CACHE MANIFEST
CACHE:
NETWORK:
*
FALLBACK:
/ /offline.html
SETTINGS:
prefer-online
期望的行為:
除了自定義離線頁面 ( offline.html
) 及其幫助程序之外,緩存中不應有任何內容。 當用戶在線訪問該站點時,該站點應正常運行,包括所有特殊狀態代碼頁面(如 404)。 當用戶離線訪問站點的根頁面時,他們應該會看到offline.html
。 當用戶在離線時訪問不存在的頁面(它可以是offline.html
或本機離線頁面)時會發生什么並不重要,但如果他們在線,那么它必須顯示 404 頁面而不是offline.html
。
當前行為:
無論瀏覽器是在線還是離線,用戶都不會看到任何 404 頁面 - 對於在用戶在線時應該顯示 404 錯誤的頁面,他們會看到offline.html
。 這是因為后備部分中的/
不僅匹配主頁,還匹配以/
開頭的每個 url,即包括所有不存在頁面的整個站點(我希望它只匹配主頁)。
從本質上講,我只需要讓我的后備觸發器只出現在/
主頁上,而不是網站上的任何其他路徑。 然后所有不存在的資源將正確返回本機離線頁面或 404 錯誤頁面而不是offline.html
。 我怎樣才能做到這一點?
沒有任何方法可以做到這一點。 在顯示頁面之前,HTML 需要通過 Internet 連接加載,如果您沒有連接到 Internet,則瀏覽器不能只顯示您的一個頁面。 即使是離線警報。 如果您的意思是“抱歉,離線更新”頁面,只需每次切換 index.html / offline.html,否則,沒有有效的選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.