2015-10-25 26 views
10

我試圖測試應用程序緩存清單:我的appcache清單測試出了什麼問題?

<?php 

// reference: http://diveintohtml5.info/offline.html 

header("Content-Type: text/cache-manifest"); 
header("Cache-Control: max-age=0, private, must-revalidate"); 

?>CACHE MANIFEST 

# todo 

/cachetest/tryme/vid/missouristate 

現在,這似乎在網絡督察右頭,並鏈接到一個html文件的頂部:

<!DOCTYPE html> 
<html manifest="/cachetest/cache.manifest/index.php" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 

然而,這實際上沒有任何證據。如果它工作,它應該不顯示任何其他物品,除非它在該文件中的網絡設置*,如所描述here

最後,讓我們來看看網絡部分。 這個緩存清單中的網絡部分也只有一行,即包含 的行只有一個字符(*)。該字符在 網絡部分中有特殊含義。它被稱爲「在線白名單通配符標誌」。 這是一種奇特的說法,即只要您的網絡連接有 ,仍然可以從原始網址下載任何不在appcache 中的內容。這對於「開放式」 脫機Web應用程序非常重要。這意味着,當您在線瀏覽假設的離線啓用維基百科時,即使您的瀏覽器 位於不同的域上,它也會正常提取 圖片和視頻以及其他嵌入式資源。 (這是在大型網站一樣,即使 他們不是離線網絡應用程序的一部分。HTML頁面生成 和本地提供,而圖像和視頻從 提供服務的CDN上的另一個領域。)沒有這個通配符標誌,我們假設的 離線啓用的維基百科在您上線時會表現得很奇怪 - 具體來說,它不會加載任何外部託管的圖片或 視頻!

這看起來像類似的網絡應用程序脫機工作,但我不知道是否必須設置本地或本地IP的HTTPS以讓瀏覽器甚至可以識別它。

我記得最近看到關於Appcache的一些事情,現在需要https,因爲Serviceworker也需要https。這是我必須在測試環境中設置的,以便在最新的瀏覽器中工作嗎?我可以改變一個about:config在普通的http上使用嗎?還是我錯過了別的?

+2

Downvoted爲什麼呢?因爲MDN說它已被棄用?儘管它受到瀏覽器的支持。 – NoBugs

+2

我不是downvoter,但我不明白你的意思是「零證據這是工作」或「它不應該顯示任何其他項目」。當我嘗試你的代碼時,我看到瀏覽器獲取html,獲取清單,獲取資源,然後按指定的方式仔細檢查清單。 applicationCache.status也表示1而不是0,表示緩存功能正常。全部沒有https。你如何期待它的工作? – Sheepy

+0

@Sheepy對不起,我不清楚,我已經包括了我正在閱讀的文檔中的引用,應該澄清那部分。 – NoBugs

回答

0

你沒有做錯什麼。

應用程序緩存不工作在Firefox。(至少對於我在Firefox 42.0)

但它在Chrome中工作(我試過46.0.2490.86(最新版))。

一些測試頁:
http://appcache-demo.s3-website-us-east-1.amazonaws.com/without-network/

http://appcache-demo.s3-website-us-east-1.amazonaws.com/with-network/

http://appcache-demo.s3-website-us-east-1.amazonaws.com/offline-iframe/

當然,你可以使自己的空緩存清單文件,並看到自己。

好運

測試頁來源: http://alistapart.com/article/application-cache-is-a-douchebag

+0

真的嗎?它應該工作。 https://developer.mozilla.org/en-US/docs/Web/HTML/Using_the_application_cache#Browser_compatibility – NoBugs

+0

Overdrive Media的脫機圖書閱讀器適用於Firefox,它具有''.manifest文件類型是否意味着您必須設置一些特殊的htaccess或服務器設置以使php(例如)爲.manifest文件提供服務? – NoBugs

+0

是的,但這只是另一種編寫'Content-Type:text/cache-manifest'的方法,我是這樣做的,在apache .htaccess中我添加了'AddType text/cache-manifest .appcache',我也嘗試過'AddType text/cache-manifest .manifest',但Firefox並不關心該文件中的內容,它緩存了它想要的所有內容,但是相同的設置在Chrome中無需更改。 –