问题标签 [cache-manifest]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - IOS 6 缓存清单
现在我正在检查 iOS 6 <--> OS X Web 控制台,我注意到一些奇怪的地方。似乎当我更新应该缓存的 css 文件时,即使我不更新清单文件,iOS 6 也会自动下载新版本。在 5.xx 下,一旦我把它全部整理好,我就会有预期的行为。
myapp.appcache
调试工具清楚地表明,当没有更改时,文件没有被重新下载(在 5kb 文件上“传输”了大约 100b)。
此外,当 myimage.jpg 本身和清单都没有更新时,它通常会传输。
任何建议或至少对类似行为的确认?
ipad - cache.manifest / 离线使用网络应用程序的奇怪行为保存到 ipad ios6 上的主屏幕
我刚刚在 iPad 上使用新的 iOS 6 发现了一些奇怪的行为。我正在测试一个网络应用程序以供离线使用。Web 应用程序只不过是一个带有缓存清单的静态网站,因此没有使用像 sencha touch 这样的特殊框架或像 phnoegap 这样的工具。只是 HTML、CSS 和 JavaScript 以及一个 cache.manifest。
该应用程序之前运行良好:我可以将网站保存到主屏幕。当我从那里打开它时,所有数据都将被下载以进行缓存。在下载结束时,弹出窗口会询问我是否要将缓存增加到 50MB - 接受 - 一切都很好 - 离线使用有效。
现在更新到 iOS 6 后:我对应用程序进行了一些更改。从主屏幕卸载应用程序。在移动 Safari 中再次打开它。保存到主屏幕。当打开下载按预期开始。但随后它冻结在 99%。当我在控制台中查找它时,我收到错误消息:“应用程序缓存更新失败,因为超出了大小配额。”
奇怪的事情来了:当我在浏览器中打开它时,下载开始,最后我被问到是否要将缓存大小增加到 50MB。我当然确认。当我现在在“网站数据”中查看 safari 的首选项时,我看到这个应用程序的所有缓存数据大约是 33MB!所以根本不超过50MB!
这是iOS6的错误吗?自 iOS 6 更新以来,在将网站保存到主屏幕时,是否有人遇到过缓存数据问题?感谢您的帮助,因为我真的被困在这里......在网上找不到任何有用的东西......
(不幸的是,我无法发布任何指向网络应用程序和/或其文件的链接)。
编辑:
我发现了有关此问题的更多信息:
http://www.nsbasic.com/blog/?p=928
显然,保存到主屏幕的 wep-apps 现在被视为原生应用程序,这意味着保存到主屏幕的同一 Web 应用程序的每个实例都有自己的“存储沙箱”。因此数据独立于移动 Safari 中保存的数据。这意味着如果您删除所有移动 safari 的网站数据,这对保存到主屏幕的网络应用程序没有影响(在 ios6 之前,它们共享相同的数据)。
我还发现了这个:
iOS 6 破坏了 webapps 中的 GeoLocation (apple-mobile-web-app-capable)
虽然不是完全相同的主题,但它可能是相关的。显然网络应用程序使用保存到主屏幕
将无法使用地理位置。仅当您从 Web 应用程序中删除此元标记时,地理位置才有效。也许这也是缓存问题的解决方法,我还不能测试它。但话又说回来:如果将保存到主屏幕的 Web 应用程序更像原生应用程序处理,也许不再需要 cache.manifest?如果我发现更多,我会在这里报告。
编辑2:
好的,经过一些测试并且没有来自网络和苹果的有用提示,我至少发现了一些东西:当我删除
从网站上看,一切都很好,因为就像你打开 Safari 一样,到目前为止我没有任何问题。所以我的兴趣是让它在没有浏览器 chrome 的情况下工作。如上所述,缓存仅达到 99%,然后我得到缓存大小配额超出错误。然后我只是关闭了主屏幕应用程序并再次打开它。现在缓存下载重新开始,完成就好了!没有冻结,没有错误!一切似乎都存储在本地。我今天只能在 iPad 模拟器上测试它,但我希望我能在稍后拿到我们的设备后尽快确认这一点。
因此,似乎不是被问到是否要增加缓存大小,而是得到缓存大小配额超出错误。也许是因为现在主屏幕应用程序的数据存储处理方式不同,您不必再手动增加缓存大小(这当然是纯粹的猜测)。不过,如果是这样的话,应该不会有任何错误。因此,您不必被要求增加缓存大小,而是必须打开主屏幕应用程序两次,顺便说一句,这是一个相当蹩脚的解决方法......
编辑3:
我只能在真实设备上确认此行为:保存到主屏幕->从主屏幕打开->下载到缓存文件->缓存大小配额最后超出错误->关闭主屏幕应用程序(按主页按钮)- > 再次重新打开它 -> 再次下载缓存文件 -> 这次没有错误 -> 一切都可以离线使用。
我还在一台装有 iOS 5 的设备上对其进行了测试,它可以正常工作,没有错误。所以这绝对是 iOS 6 的问题。
其他人可以确认这种行为或错误吗?
编辑4:
我偶尔有机会在 iOS 6.1.3 上对此进行测试——不幸的是仍然是相同的行为......
ipad - 保护 HTML5 AppCache 和 SQLite 不被删除
我正在使用 HTML5 AppCache 清单开发一个 Web 应用程序,用于存储所有应用程序工件(HTML 页面、样式表、脚本等),并使用 SQLite 来存储用户提交的表单数据。
令人担忧的是,这两个存储库都会通过删除浏览器数据而被删除 - 主要关注点是 SQLite,因为与 AppCache 相比,存储在那里的数据非常重要。有没有办法在桌面浏览器和 iPad 上限制我的应用程序的删除?
PS 实际上应用程序将在离线模式下访问 - 数据将在稍后在线模式下同步到服务器。我需要保护在离线模式下存储在 SQLite 中的数据不被删除 - 因为有可能意外删除它。
html - Apple 是否从 iOS 设备中删除了 HTML5 缓存离线查看?
我在四月份为我的公司制作了一个 HTML5 “webapp”,那时,我能够将其放置在 iPhone 和 iPad 的主屏幕上,并将其保存为离线查看的书签(Android 和 BB 也是如此,但是那些没有出现问题)。
现在,6 个月后,我尝试加载页面,对于我的 iPhone 和 iPad,主屏幕按钮不会加载,但书签仍然有效。
没有信号时是否存在阻止主屏幕按钮加载的故障?
(是的,我知道几年前有问题/答案,但我正在寻找更新的答案)
这是我的清单:
就像我说的,这确实适用于 Android、BB 和 iOS 书签,并且只会在 iOS 主屏幕上失败。
ios - 如何:iOS 6 上的主屏幕应用程序和离线使用 – 缓存清单已过时?
由于苹果的 ios 更新到 ios 6 数据/本地存储的 Web 应用程序和主屏幕应用程序的处理方式与以前不同。在 ios 6 之前,它们共享相同的数据。现在主屏幕应用程序拥有自己的数据,如原生应用程序(请参阅此处:iO6 和数据存储)。
由于我的主屏幕应用程序中的缓存清单存在一些问题(在移动 safari 中工作正常,在主屏幕应用程序中无法正常工作 - 请参阅此处:cache.manifest 的奇怪行为 / 保存到家庭的网络应用程序的离线使用 - ipad ios6 上的屏幕),我问自己是否可能不再需要通过缓存清单存储数据以供主屏幕应用程序离线使用。我没有任何运气在网上搜索。
所以我的问题如下:ios 6 上的主屏幕应用程序的缓存清单是否已过时?如果是这样,我可以把它留在那儿还是必须将其移除?或者:我现在是否需要以某种不同的方式启动离线存储?
据我了解,缓存清单曾经/用于告知应缓存网站的哪些数据,以便以后访问会减少加载时间,并且该网站可以离线使用(在移动 Safari 中或作为主屏幕应用程序)。但是,如果现在主屏幕应用程序和原始网站不再共享相同的数据 - 现在如何处理主屏幕应用程序的缓存?
我很乐意为此提供任何建议/帮助。或者至少是一些操作方法的链接。谢谢!
ios - 主屏幕 Web 应用程序和 AD 身份验证
我有一个具有 AD 身份验证的 HTML5 网站。在这个网站内,我有一个网页,我想成为 iPad 上的“网络应用程序”。
我已经准备好 cache.appcache 文件,并且在没有 AD 身份验证的环境中可以正常工作。
当我转到 iPad 上的页面,进行身份验证然后添加到主屏幕时,一切似乎都很好。
当我单击主屏幕快捷方式时,该页面再次要求进行身份验证。我需要这是一个离线应用程序 - 我怎样才能做到这一点?我希望用户必须进行身份验证才能在主屏幕上“安装”网络应用程序,但之后不希望他们再次进行身份验证。
欢迎任何想法!
html - 第一次在 chrome 上重定向后页面从缓存中消失
当用户访问我的站点并且设备当前处于脱机状态时,我正试图将用户转移到脱机页面。
问题是我从主页本身触发了缓存,所以问题是当用户访问我的 url 时,他会访问加载页面本身,而不是我希望他访问的离线页面。
如果清单不可用,我所做的是使用 js 重定向用户
现在,这在用户第一次访问该页面时可以完美运行。下次我去主页时,它会将我重定向到离线页面,但离线页面不再可用。
知道这是 chrome 问题还是 HTML5 行为,我该如何保留离线页面?
谢谢
html - 应用程序缓存错误事件:资源提取失败 (-1)
我正在尝试mp4
在本地应用程序缓存中存储一个视频文件(相当小〜 2.5MB)。
清单看起来像:
Chrome (22.0.1229.94 m) 将在控制台中记录以下内容:
当我单击错误旁边的链接时,它可以很好地打开文件。
我的清单以正确的 MIME 类型提供(我使用的是 HTML5 样板.htaccess
文件)并且提供了视频Content-Type:video/mp4
我的文件是不是太大了?我完全能够以这种方式缓存 1MB 图像,所以我认为文件大小应该不是问题?桌面和 iPad 上的 Safari 确实可以很好地缓存视频。
备注:我已经看到了这个问题,但它没有涵盖我的问题,因为解决方案似乎与 Python 相关。
html - HTML5 新缓存不适用
我有一个 HTML5 应用程序,它有一个大型清单文件,其中包含很多 PDF。第一次访问时,缓存会在几分钟内下载并正确应用。
据报道,当我进行更改并相应地更新清单时,它会再次下载缓存,但速度要快得多,这表明它实际上并没有获取文件。我正在监视缓存事件,一切都完成而没有错误,但没有进行任何更改。
如果我从清单中删除大部分 PDF,它的行为应该如此,所以我知道这是一个空间问题。有没有办法在下载新文件之前以编程方式清除缓存?我猜 fetch 没有发生,因为它空间不足,但没有引发错误事件。
javascript - 从 webapp 中的缓存清单加载时 Javascript 停止
当从全屏 WebApp 模式(iPad3/iOS6)中的缓存清单加载侧面时,我的 javascript 代码停止。
这会导致您在前 5 秒内无法做任何事情。之后,您可以正常使用该网站。
1) 为什么 JavaScript 代码会停止?(事件问题?)
2)我该如何解决?
涉及的是:
- jquery-1.8.2.min.js
编辑:
我做了实验,发现在 onNoUpdate 和 onUpdateReady 事件之后 JavaScript 代码运行正常。在这两个事件启动之前,它会经过很长时间。所以这不是一个选择。
编辑2: