0

在我尝试包含来自 JSONP 端点的数据之前,我对缓存的离线应用程序很幸运。这是一个小示例,它从新的 Netflix 小部件 API 加载单个电影:

<!DOCTYPE html>
<html manifest="main.manifest">
   <head>
      <title>Testing!</title>
   </head>
   <body>
   <p>Attempting to recover a title from Netflix now...</p>
   <script type="text/javascript">
   function ping(r) { alert('API reply: ' + r.catalog_title.title.regular); }
   var cb = new Date().getTime();
   var s = document.createElement('SCRIPT');
   s.src = 'http://movi.es/7Soq?v=2.0&output=json&expand=widget&callback=ping&cacheBuster=' + cb;
   alert('SCRIPT src: ' + s.src);
   s.type = 'text/javascript';
   document.getElementsByTagName('BODY')[0].appendChild(s);
   </script>
</body>
</html>

...这是我的清单的内容main.manifest,它不包含任何文件,只是在那里我的浏览器知道缓存调用的 HTML 文件。

CACHE MANIFEST

是的,我已经确认我的服务器正在使用正确的内容类型发送清单,text/cache-manifest.

该应用程序运行良好 - 意味着两个警报都显示 - 我第一次运行它,但随后的运行,即使在第 10 行尝试缓存清除,似乎正在尝试从缓存加载脚本,无论查询是什么字符串是。我看到显示脚本源的警报,但回调永远不会触发。

如果我从第 2 行删除清单链接并重置我的浏览器 - 即 Safari 和 iPhone 模拟器 - 以清除缓存,它每次都有效。我也尝试过提醒页面中的 SCRIPT 标签数量,在所有情况下它肯定会同时看到现有标签和动态创建的标签。

4

1 回答 1

0

啊哈,在规范中找到了所有疯狂的地方:

http://www.whatwg.org/specs/web-apps/current-work/multipage/offline.html#concept-appcache-onlinewhitelist-wildcard

我需要将http://movi.es/添加到清单的 NETWORK: 部分。完整的文件现在看起来像这样:

CACHE MANIFEST

NETWORK:
http://movi.es/

...而且似乎每次都在访问网络。

于 2009-12-16T02:48:44.763 回答