更新脱机缓存(Chrome On Mobile)

问题描述 投票:0回答:3

下午全部,

一点背景 - 我正在为可以安排工作的公司建立一个自定义日历,工程师可以通过手机访问它,以了解他们的工作时间和地点。他们以前使用谷歌日历,但现在想要定制的东西。

一切都很好,直到有人丢失手机信号并在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" />

据我所知,没有办法手动删除用户的网站缓存并重新下载,一旦缓存已保存,就无法强制更新。如果你将它设置为过期,那么它就不能访问,你不知道他们接下来什么时候会有更新的连接,所以我会围成一圈。

我现在已经尝试了好几个小时才能找到有用的东西,不能相信这不是一件简单的事情,因此我现在把自己放在优秀编码员的怜悯之下,指出我在正确的方向前老板把我挂在一楼的窗户旁边。

非常感谢


UPDATE

使用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('d-m-Y H:i:s');
file_put_contents('cache.appcache', $newFile);

基本上只是在文件中搜索“UPDATED”并插入新的时间,从而更新文件并要求从返回的用户重新检查。

有人可能会指出这不是正确的方法,但似乎从我的测试中起作用,所以要感谢那些贡献的人。

javascript php google-chrome caching offline
3个回答
0
投票

您是否尝试在更改其中一个文件时更改缓存清单的内容? 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:

0
投票

那么最好的选择就是建立一个PWA。这应该包括清单文件和服务工作者。它使您可以缓存网站的内容,并在重新建立连接后更新它。然而,这是非常新的,需要对服务工作者进行大量的研究。如果您需要任何有关PWA发展的帮助,将很乐意在一定程度上提供帮助


0
投票

没有HTTP-Header的唯一方法是不断重命名文件。

和依赖HTML tag文件名。

所以文件重新加载。

随着HTTP-Header看这里。

How to control web page caching, across all browsers?

只要日历中有新的更改,您就可以执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.