
当我们的应用程序从iPad主页图标加载时,将正确读取应用程序缓存清单,并缓存所有引用的资源.当用户开始脱机使用应用程序时,会出现此问题.在使用应用程序期间,会在页面DOM中添加和删除SVG.在此期间,SVG中的某些映像无法从应用程序缓存加载,即使它们肯定存在并缓存.相反,向服务器发出了对图像的请求,这显然是因为用户不再在线而失败.
有趣的是,当在iPad上的safari中导航到页面时,似乎不会出现此问题.它似乎特定于整页Web应用程序视图,但我无法保证.
我可以使用这个HTML页面轻松地重现这个:
<!DOCTYPE HTML><HTML manifest="testfiles.manifest"><head> <Title>Test</Title> <script src="JavaScript/jquery-1.7.1.Js" type="text/JavaScript"></script> <!-- Remove the browser Chrome when the page is loaded from a homescreen icon --> <Meta name="apple-mobile-web-app-capable" content="yes" /></head> <body> <h1>Simple SVG caching test</h1> <h2>Basket ball SVG</h2> <p> <span ID="remove">Remove</span> | <span ID="add">Add</span> </p> <p> <span ID="show">Show</span> | <span ID="hIDe">HIDe</span> </p> <p> <span ID="reload">Reload</span> </p> <embed wIDth='360' height='510' src='Testfiles/Basketball.svg' /> <script type="text/JavaScript"> $(function () { $("#remove").click(function () { $("embed").remove(); }); $("#add").click(function () { $("<embed wIDth='360' height='510' src='Testfiles/Basketball.svg' />").appendTo("body"); }); $("#show").click(function () { $("embed").show(); }); $("#hIDe").click(function () { $("embed").hIDe(); }); $("#reload").click(function () { location.reload(true); }); }) </script> </body></HTML> 这个SVG:
<?xml version="1.0" enCoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBliC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" wIDth="340" height="340"> <image wIDth="340" height="340" xlink:@R_301_6839@="Basketball.png" x="0" y="0" /></svg>
这个图像由SVG引用:
而这个清单文件:
CACHE MANIFESTCACHE:Testfiles/Basketball.svgTestfiles/Basketball.pngJavaScript/jquery-1.7.1.Js
并按照以下步骤 *** 作:
>打开safari并导航到再现HTML文件的位置(我们在windows 2008 / IIS服务器上托管它)
>使用“添加到主屏幕”按钮将页面添加到主屏幕.
>关闭safari并清理safari缓存
>从新添加的书签加载页面
>等到页面完全缓存.通常大约5-10秒,但您可以附加到某些应用程序缓存事件以注销进度.
>关闭wifi(或你使用的连接方式)
>从新添加的书签加载页面
>请注意,页面看起来正确缓存.使用添加和删除按钮.当您使用页面上的“添加”按钮添加时,您应该很快注意到. SVG中的图像资源并不总是从应用程序缓存加载,即使它已被明确缓存.
出现问题时,您应该看到类似下面的屏幕截图
我已经检查了一些显而易见的事情:
>应用程序缓存清单具有正确的mime类型
> Manifest已下载
>清单中引用的资源正确缓存
我的问题是:
>有谁知道为什么会这样?
>这个问题有没有解决方法?
我已将此记录为苹果的错误,因此我将根据我可能从中获得的任何反馈更新此问题!
谢谢!
安迪.
解决方法 只是一个小小的“抬头!”如果你正在思考这个问题,就像我一个小时前一样…:清单文件区分大小写.
我有一个专门用于桌面,平板电脑和智能手机的网站.在AndroID(4.0.3)上,我注意到在启用HTML 5 App Cache后,我的SVG图标开始失败,就像上面的情况一样.当用户刷新页面时,它们显示为断开的链接(并且尝试从缓存中提取图标).
在错误的情况下,我在文件夹名称中写了一封信给我的SVG图标,并立即修复此问题解决了问题.
总结以上是内存溢出为你收集整理的ios – 为什么SVG中的图像在以前缓存在iPad上时并不总是从应用程序缓存中加载?全部内容,希望文章能够帮你解决ios – 为什么SVG中的图像在以前缓存在iPad上时并不总是从应用程序缓存中加载?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)