繁体   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