18

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

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

我尝试了以下方法:

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

  2. 删除 cookie 和网站数据

  3. 重新启动 iPad

  4. 我已经manifest="manifest.appcache"删除了(然后再次尝试 1 到 3)

  5. 我添加了以下元标记

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

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

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

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

4

7 回答 7

2
  1. 似乎对清单文件进行更改(例如添加版本号)应该会使应用重新加载内容:Mobile Web App not clearing cache proper

  2. 你应该在你的 CSS 和 JS url 中添加一个版本号来解决缓存问题。例如 file.css?v=2

干杯,Z。

于 2013-09-26T21:28:49.247 回答
1

手动刷新缓存然后重新加载页面怎么样:

<script>
if(window.applicationCache) {
  applicationCache.onnoupdate = function() { alert("debug: manifest not changed!") };
  applicationCache.onupdateready = function() { location.reload() };
  applicationCache.update();
}
</script>
于 2013-12-17T06:13:04.073 回答
1

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

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

于 2013-12-16T08:17:50.273 回答
1

我发现这个 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";
?>

atm 我无法在 ios 7 上测试

于 2013-12-16T22:27:26.917 回答
1

尝试从主屏幕删除您的应用程序,然后转到 safari 中的应用程序 url,但在 safari 中的 url 末尾添加类似?v=2. 然后单击“开始”,然后添加到主屏幕。这将确保您从服务器获得 css 和 javascript 的非缓存版本。

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

于 2014-02-06T20:16:29.330 回答
1

尝试手动清除缓存。您可以通过设置来做到这一点。

于 2014-01-03T20:50:30.483 回答
-1

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

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

  1. 从 iPhone 或 iPad 的主屏幕启动设置应用程序。
  2. 向下滚动并点击 Safari。
  3. 现在一直滚动到底部并点击高级。
  4. 点击网站数据。请注意,您可以在此处查看 iPhone 或 iPad 网站数据占用了多少空间。
  5. 再次滚动到底部,然后点击删除所有网站数据。
  6. 再次确认您要删除所有数据。
于 2014-05-20T00:56:30.597 回答