3

我正在开发一个HTML5网络应用程序,用于使用移动Safari和“添加到主屏幕”功能在iPad2上离线使用。我可以在桌面版Chrome中使用cache.manifest文件实现脱机缓存,但无法在iOS移动版Safari中使用它。HTML5网络应用程序无法在iOS缓存Safari离线使用

该应用程序运行流畅在iPad上同时在线,但一旦我下线,我得到这些错误消息:“MyApp的不能打开,因为它没有连接到互联网”(“添加到主屏幕”中在iPad上观看)和“Safari无法打开该页面,因为它未连接到互联网”(在同一iPad上的Safari浏览器中)。

我已经在网上阅读了数百个疑难解答/问题页面和清单教程,试图解决这个问题,并没有任何建议工作。在阅读了这么多关于这个功能之后,它应该很容易实现,但在这里我是。

这里是我已经完成/尝试/使用到目前为止没有成功的总结。我已经尝试了所有的下方同时使用cache.manifest和manifest.appcache变化没有成功,但为了简单起见,我将只记录了cache.manifest情况:

  1. 我开发和利用最新的XAMPP的Apache测试的Windows服务器上的Win10 x64的本地安装

  2. 目标设备一个iPad2运行iOS 8.4版和移动版Safari版本8.我的完整用户代理字符串是:

    Mozilla/5.0 (iPad; CPU OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12H143 Safari/600.1.4 
    
  3. 在XAMPP我已经更新httpd.conf文件,包括

    AddType text/cache-manifest .manifest 
    
  4. 在XAMPP我已经下XAMPP更新mime.types文件正确的MIME类型.manifest的

    \ apache的\的conf \包括正确的MIME类型.manifest的

    text/cache-manifest    manifest 
    
  5. 在XAMPP,因为我的web应用程序使用TTF,WOFF,ICO,PNG,JPG,JS,MP3和css文件,我已经在XAMPP验证mime.types文件\ apache的\的conf \,以确保它包括MIME类型为:

    application/x-font-ttf   ttf ttc 
    application/x-font-woff   woff 
    image/x-icon     ico 
    image/png      png 
    image/jpeg      jpeg jpg jpe 
    application/javascript   js 
    audio/mpeg      mpga mp2 mp2a mp3 m2a m3a 
    
  6. 我已经把.htaccess文件中的网络应用程序根公共HTML目录正确的MIME类型.manifest的

    AddType text/cache-manifest .manifest* 
    
  7. 我已经包含在索引页面的HTML元素的manifest属性:

    <!DOCTYPE html> 
    <html lang="en" manifest="cache.manifest"> 
    <head> 
    
  8. 我试图去除申报的index.html这一行,但它没有工作:

    <meta name="apple-mobile-web-app-capable" content="yes"> 
    
  9. 在切换到飞行模式和刷新之前,我已经有足够的时间让应用在Safari中缓存。我正在使用Windows机器,因此无法使用Web Inspector进行调试。我使用Jonathan Stark's Debugging ScriptJSConsole来尝试和调试,但它并没有真正提供很多有用的信息,只是它没有被缓存,我知道它是无效的。

  10. 我已经创建了一个cache.manifest文件,并将其放置在Web应用程序的根公共HTML目录中。我已经包括其中许多来自其他计算器衍生的问题的其他解决方案,的建议,其中包括:

    • 主要是我一直坚持的多个消息来源告知移动Safari浏览器将igrnore一切
    • 的cache.manifest名
    • 不包括它引用.manifest的
    • 清单下的高速缓存部分
    • 包括网络后,*所有资源index.html文件:
    • 包括所有章节标题,即使不使用
    • 仅用于相对URI的
    • 清单文件的内容是相对于清单文件(它是在网络应用可以与index.html的根目录)
    • 清单文件正在从同一产地担任主
    • 确保所有文件都可用,以避免错误并丢弃.manifest。正如我提到的离线缓存,在桌面版Chrome工作这验证清单的内容
    • 清单文件没有列出清单文件

清单的内容是:

CACHE MANIFEST 
    # ver 0.0.8 

    CACHE: 
    data/apple-touch-icon.png 
    data/favicon.ico 
    data/fnt0.ttf 
    data/fnt0.woff 
    data/fnt1.ttf 
    data/fnt1.woff 
    data/fnt2.ttf 
    data/fnt2.woff 
    data/fnt3.ttf 
    data/fnt3.woff 
    data/html5.png 
    data/html5-unsupported.html 
    data/img0.jpg 
    data/img1.png 
    data/img10.jpg 
    data/img11.jpg 
    data/img12.png 
    data/img13.png 
    data/img14.png 
    data/img15.png 
    data/img16.jpg 
    data/img17.png 
    data/img18.png 
    data/img19.png 
    data/img2.png 
    data/img20.png 
    data/img21.png 
    data/img22.png 
    data/img23.png 
    data/img24.png 
    data/img25.png 
    data/img26.png 
    data/img27.png 
    data/img28.png 
    data/img29.png 
    data/img3.png 
    data/img30.png 
    data/img31.png 
    data/img4.png 
    data/img5.png 
    data/img6.png 
    data/img7.png 
    data/img8.png 
    data/img9.png 
    data/player.js 
    data/slide1.css 
    data/slide1.js 
    data/slide10.css 
    data/slide10.js 
    data/slide11.css 
    data/slide11.js 
    data/slide12.css 
    data/slide12.js 
    data/slide13.css 
    data/slide13.js 
    data/slide14.css 
    data/slide14.js 
    data/slide15.css 
    data/slide15.js 
    data/slide16.css 
    data/slide16.js 
    data/slide17.css 
    data/slide17.js 
    data/slide18.css 
    data/slide18.js 
    data/slide2.css 
    data/slide2.js 
    data/slide3.css 
    data/slide3.js 
    data/slide4.css 
    data/slide4.js 
    data/slide5.css 
    data/slide5.js 
    data/slide6.css 
    data/slide6.js 
    data/slide7.css 
    data/slide7.js 
    data/slide8.css 
    data/slide8.js 
    data/slide9.css 
    data/slide9.js 
    data/sound1.mp3 

    NETWORK: 
    * 

    FALLBACK: 

我真的很感谢在这个问题上有一些新的眼光,我只是看不出问题在哪里。

+0

有关此主题的任何新闻?我似乎有同样的问题 - 除iPad Safari(iPad Chrome作品)外,其他地方都适用。 – fnagel

+0

@fnagel在这个阶段没有消息,我走了另一条不太适合我需要的路,所以我打算很快再次选择它。这一次,我打算从一个基本的应用程序开始,最小化到没有任何资产,然后建立起来。这应该可以简化问题 – DarkSpectrum

回答

0

你可以尝试减小缓存文件的大小吗?在我的情况下,它有帮助,但没有解决所有问题)缓存文件大小至少30 Mb,减肥后他们变成< 1Mb和AppCache终于开始工作。

相关问题