2011-07-31 92 views
1

我有一個iPhone的網絡應用程序,我想知道如何強制緩存刷新。完全禁用HTML5緩存(清單)?

我的緩存清單是這樣的:

CACHE MANIFEST 
index.html 
file1.css 
file1.js 

index.html是應用程序的肉,所以我把緩存中的。在這一點上,我似乎被綁架,因爲我無法弄清楚如何讓iPhone無效緩存。即使去Settings > Safari > Clear Cache不起作用,雖然我希望能夠以編程方式進行控制。從清單中刪除index.html並重新添加它似乎有效,但我必須知道,我的所有客戶都清理了更新後的清單。如何緩存index.html並在更改時仍然更新?

回答

3

關於我的頭頂,對清單的任何更改都可以實現 - 清單可以包含以#開頭的註釋。只需添加隨機評論,它就可以工作。

這是一個很有用的屬性,當我在git倉庫中處理HTML5應用程序時,我曾經在每次提交之後使用包含HEAD哈希的註釋自動重新生成清單,以便更改始終傳播給用戶。

+0

我的應用程序是微不足道的,但我可以只寫一個腳本來添加'git的日誌--oneline |切-c -7 |頭-1「作爲評論的清單頭。這不是一個壞主意。 –

+0

要獲得提交散列,您還可以執行'git log -1 --format =「%h」' –

1

似乎是在WebKit瀏覽器防止他們重新加載明顯變化,網站的錯誤,請參閱this link

沒有任何線索的解決方法,除非我直接調用的index.html。

沒有機會一臺iPad/iPhone,Web應用程序固定到做的工作......

0

是的,你可以使用JavaScript來迫使Safari瀏覽器重新加載緩存的資源文件。

根據Apple的說法,修改緩存清單文件將導致Safari重新加載任何已更改的資源文件。 但是直到用戶第二次訪問該網站時,那些重新加載的文件纔會被瀏覽器使用。這種延遲會很痛苦,特別是在開發過程中。

要強制Safari瀏覽器立即重新加載緩存的內容,蘋果公司說,你can use this JavaScript操縱applicationCache對象:

function updateSite(event) { 
    window.applicationCache.swapCache(); 
} 
window.applicationCache.addEventListener('updateready', updateSite, false);