簡體   English   中英

更新離線緩存(Chrome瀏覽器移動版)

[英]Updating Offline Cache (Chrome On Mobile)

下午全部

有點背景-我正在為一家公司創建自定義日歷,可以在該日歷中安排工作,工程師可以通過移動設備訪問該日歷,以了解他們的去向和時間。 他們以前使用過Google日歷,但現在想要定制一些東西。

一切正常,直到有人失去電話信號並在Chrome中顯示一個可怕的脫機頁面並且無法訪問任何信息為止。 我想要做的是讓它保存日歷的脫機版本,並且在他們以更好的連接重新訪問它時也進行更新-因為工作時間經常更改。


我曾嘗試保存頁面並在Chrome中啟用離線模式,但是直到您手動清除緩存后頁面才會更新,因此效果不佳。

我嘗試添加一些JavaScript來硬刷新頁面,希望它清除瀏覽器緩存,但又不會更新頁面。

 <script>location.reload(true);</script> 

我閱讀了有關緩存清單的信息,並進行了嘗試,但是盡管感覺像它想工作一樣,但它也不會更新頁面,直到我轉到chrome:// appcache-internals並刪除文件為止。

 CACHE MANIFEST /calendar.php /css/style.css 

PHP或Javascript標頭都不起作用,因為它們要么不會在重新訪問時更新文件,要么根本就不會保存任何文件。

 header("Cache-Control: no-cache, must-revalidate"); 

 <meta http-equiv="Cache-Control" content="no-store" /> 

據我所知,無法手動刪除用戶的網站緩存並重新下載,並且一旦保存了緩存,就無法強制對其進行更新。 如果您將其設置為過期,那么就無法訪問它,並且您不知道他們下一次何時可以更新連接,因此我將繞圈走。

我已經嘗試了好幾個小時,找到了行之有效的方法,並且不敢相信這並非一件容易的事,因此,我現在正全力以赴地請各位優秀的編碼人員為我指出正確的方向,老板把我從一樓的窗戶上吊下來。

非常感謝


更新

以Clarence所說的作為起點,我在appcache文件中想到了以下代碼:

 CACHE MANIFEST CACHE: /css/bootstrap.css /css/style.css /calendar.php NETWORK: /calendar.php # UPDATED: 03-04-2018 15:55:57 

它的作用是緩存Calendar.php文件,但如果存在連接,則它會再次查看NETWORK標題下的那些文件,因此我也將其放在了那里。 如果appcache文件沒有更改,則瀏覽器不會打擾您,因此在更改作業后,我使用以下代碼將文件寫入文件:

 $manifest = file_get_contents(__DIR__ . '/cache.appcache'); $newFile = substr($manifest, 0, (strpos($manifest, '# UPDATED: ') + 11)); $newFile = $newFile . date('dmY H:i:s'); file_put_contents('cache.appcache', $newFile); 

基本上只在文件中搜索“ UPDATED”並插入新的時間,從而更新文件並需要返回用戶的重新檢查。

可能有人指出這不是正確的方法,但從我的測試來看似乎可行,因此要感謝那些貢獻者。

最好的選擇是創建PWA。 這應該包括清單文件和服務工作者 它使您可以緩存網站的內容,並在重新建立連接后對其進行更新。 然而,這是非常新的,需要對服務人員進行大量研究。 如果您需要有關PWA開發的任何幫助,將在一定程度上樂於幫助

每當更改文件之一時,您是否嘗試過更改緩存清單的內容? 關於文件更改,APPCACHE有點挑剔,可能會很麻煩。 我通常會在注釋中添加時間戳和版本號,以強制其在瀏覽器中進行更新,如下所示:

CACHE MANIFEST
# 01-01-2001 v1.0 (Change whenever you need to force an update of the cache)

CACHE:
/css/file.css
/js/file.js


NETWORK:
*

FALLBACK:

沒有HTTP-Header的唯一方法是連續重命名文件。

以及相關的HTML tag文件名。

因此,文件將重新加載。



使用HTTP-Header請看這里。

如何在所有瀏覽器中控制網頁緩存?



只要在日歷中進行了新的更改,就可以執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM