2009-12-16 68 views
0

直到我尝试从JSONP端点中包含数据时,我对缓存的脱机应用程序有好运。这里有一个小例子,它加载由新的Netflix插件API一部电影:如何避免让JSONP返回缓存在HTML5离线应用程序中?

<!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行高速缓存清除,似乎试图从缓存中加载脚本no重要的是查询字符串是什么。我看到显示脚本源的警报,但回调从未触发。

如果我从第2行删除清单链接并重置我的浏览器(作为Safari和iPhone模拟器)以清除缓存,它每次都有效。我也试着提醒页面中SCRIPT标签的数量,并且在所有情况下都能看到现有的和动态创建的标签。

回答