【问题标题】:How do I avoid having JSONP returns cached in an HTML5 offline application?如何避免在 HTML5 离线应用程序中缓存 JSONP 返回?
【发布时间】:2010-04-04 01:37:44
【问题描述】:

在我尝试包含来自 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 标签的数量,它肯定会在所有情况下同时看到现有标签和动态创建的标签。

【问题讨论】:

    标签: iphone caching manifest jsonp offlineapps


    【解决方案1】:

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

    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/
    

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

    【讨论】:

      猜你喜欢
      • 2021-06-24
      • 1970-01-01
      • 1970-01-01
      • 2010-11-15
      • 2015-05-05
      • 1970-01-01
      • 1970-01-01
      • 2017-05-23
      • 2011-12-28
      相关资源
      最近更新 更多