iOS 独立 Web 应用在升级到 iOS7 后无法加载新内容

iOS standalone web app cant load new content after upgrade to iOS7

本文关键字:iOS7 新内容 加载 Web 独立 应用 iOS      更新时间:2023-09-26

我有一个JavaScript应用程序,我在iPad上以独立模式运行(添加到主屏幕(。

我已经从iOS 6升级到iOS 7,现在我的应用程序总是加载相同的内容,它一直在缓存。即使我在每次应用程序加载时动态加载我的 JS 和 CSS 文件,并以唯一的时间戳作为参数。我需要它来确保JS和CSS文件没有缓存,并且在iOS 6中工作。

我尝试了以下方法:

  1. 从主屏幕删除应用程序

  2. 删除饼干和网站数据

  3. 重新启动苹果电脑

  4. manifest="manifest.appcache"删除了它(然后再次尝试 1 到 3(

  5. 我添加了以下元标记

    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="pragma" content="no-cache">

  6. 由于我在本地开发并且该页面是从我的台式 PC 提供的,因此我尝试更改 PC 的 IP,然后尝试 1 到 3,但它没有解决我的问题。

因此,无论它们是在 HTML 文件还是 JS 中,我的所有更改都不会出现。

iOS 处理独立应用程序的方式显然发生了一些变化。我错过了什么?

  1. 似乎对清单文件进行更改(例如添加版本号(应该会使应用程序重新加载内容:移动Web应用程序未正确清除缓存

  2. 您应该向 CSS 和 JS URL 添加版本号以解决缓存问题。例如文件.css?v=2

干杯Z.

只需删除 HTML 中的清单引用,即不使用清单文件。

当您使用它时,您的清单文件是否提供正确的 mimetype?

我发现这个PHP脚本可以将正确的manifest.cache文件输出到浏览器

我前段时间做了也许它有帮助。

它会自动检查某些文件是否被修改,并强制浏览器重新加载新的 manifest.cache。

清单.php

<?php
header("Cache-Control: max-age=0, no-cache, no-store, must-revalidate");
header("Pragma: no-cache");
header("Expires: Wed, 11 Jan 1984 05:00:00 GMT");
header('Content-Type: text/cache-manifest');
echo "CACHE MANIFEST'n";
$hashes="";
$dir = new RecursiveDirectoryIterator(".");
foreach(new RecursiveIteratorIterator($dir) as $file){
 if ($file->IsFile()&&$file!="./manifest.php"&&substr($file->getFilename(),0,1)!="."){
  echo $file."'n";$hashes.=md5_file($file);
 }
}
echo "NETWORK:'n";
echo "*'n";
echo "FALLBACK:'n";
echo "online.html fallback.html'n";
echo "# Hash: " . md5($hashes) . "'n";
?>

自动取款机 我无法在 iOS 7 上进行测试

如何手动刷新缓存,然后重新加载页面:

<script>
if(window.applicationCache) {
  applicationCache.onnoupdate = function() { alert("debug: manifest not changed!") };
  applicationCache.onupdateready = function() { location.reload() };
  applicationCache.update();
}
</script>

尝试手动清除缓存。您可以通过设置执行此操作。

尝试从主屏幕中删除您的应用程序,然后在 Safari 浏览器中转到应用程序 URL,但在 Safari 中的 URL 末尾添加类似 ?v=2 的内容。然后单击"开始",并添加到主屏幕。这将确保您从服务器获取 css 和 javascript 的非缓存版本。

您还可以在 html 中的 javascript 和 css 调用末尾添加一个随机数。这将确保来自主屏幕上应用程序的所有未来请求都获得未缓存的 css 和 javascript 版本。

我找到了本教程。事实证明,ios7将网站数据存储在与cookie和数据部分不同的位置。

http://www.imore.com/how-clear-stored-website-data-ios-7-safari

  1. 从iPhone或iPad的主屏幕启动"设置"应用程序。
  2. 向下滚动并点击野生动物园。
  3. 现在一直滚动到底部,然后点击高级。
  4. 点击网站数据。请注意,在这里您可以看到iPhone或iPad网站数据占用了多少空间。
  5. 再次滚动到底部,然后点击删除所有网站数据。
  6. 再次确认您要删除所有数据的时间。