gpt4 book ai didi

html 5 appcache 用户控制更新

转载 作者:可可西里 更新时间:2023-11-01 13:17:02 24 4
gpt4 key购买 nike

我正在开发一个 ipad 网络应用程序,它将接收每月的更改。但是我不知道如何让用户决定是否更新缓存。当 ipad 注意到 list 文件发生变化时,它往往会继续进行更新。我想防止这种情况发生,这样还没有读完本月刊的用户可以在他们喜欢的时候更新。我已经搜索了这个问题的解决方案,但没有找到任何有用的信息。

我的应用程序的设置方式是我有一个内容页面,它从数据库中获取数据,所有其他文件(来自添加到内容页面的媒体的应用程序)都是静态的。

我有一个 cache.manifest,其中包含每个文件,并且版本号会在评论顶部的更新时自动更改。

因此,对内容的更新意味着一个新的 list ,这意味着 updateReady 事件被触发。如果有人能给我任何关于如何捕获它并防止它自动切换到新版本的指示,那就太好了。

谢谢!

最佳答案

如何停止应用更新?

Once an application is offline it remains cached until one of the following happens:

  • The user clears their browser's data storage for your site.
  • The manifest file is modified. Note: updating a file listed in the manifest doesn't mean the browser will re-cache that resource. The manifest file itself must be alternated.
  • The app cache is programatically updated.

http://www.html5rocks.com/tutorials/appcache/beginner/#toc-updating-cache

简而言之:不要修改 list 文件。

如何为每个用户单独更新 list 文件?

如果用户第一次访问网站,他的浏览器会加载当前 list ,所以我们会使用动态 URL 并动态生成 list 文件:

<html manifest="manifest.php?version=2">

浏览器会记住 URL manifest.php?version=2 并且每次生成的 list 文件都保持不变,因此浏览器不会更新( list 文件未修改)。脚本文件看起来像:

<?php

header ( "Content-Type: text/cache-manifest" ) ;

echo "CACHE MANIFEST\n\n" ;

echo "# version " . $_GET [ "version" ] . "\n" ;

echo "index.php\n" ;
echo "styles.css\n" ;
echo "scripts.js\n" ;

?>

现在,如何强制浏览器从另一个 URL 加载 list ,例如 manifest.php?version=5

我尝试更改 manifest 属性内容并调用 window.applicationCache.update()但浏览器从旧 URL 请求 list 文件。

另一种方式可能是:

  • 询问用户是否要更新;
  • 如果是,则保存 cookie ("wish_to_update=1");
  • 在 manifest.php 中读取 cookie 并检查用户是否希望更新;

在 manifest.php 中:

if ( $_COOKIE [ "wish_to_update" ] == "1" )
{
// generate modified version
echo "# version another than in your URL" ;
setcookie ( "wish_to_update", "0" ) ;
}
else
{
// generate unmodified version
echo "# version " . $_GET [ "version" ] . "\n" ;
}
  • 修改后的 list 文件将强制浏览器重新下载所有资源。

关于html 5 appcache 用户控制更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6177571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com