问题标签 [html5-appcache]
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 本身和清单都没有更新时,它通常会传输。
任何建议或至少对类似行为的确认?
html - HTML5 离线应用缓存:强制刷新所有内容?
我的小型 HTML5 应用程序需要在服务器上重新部署。我知道我只需触摸 .appcache 文件即可让每个浏览器在下次访问时更新到文件的最新版本。
清单如下所示:
为了“触摸”,我添加了一条评论 (#Version:),我的意思是在内容更改时随时更新。
奇怪的是,一些文件被更新了。并非全部,例如,一位同事获得了最新的 core.js,但仍显示旧的 walkthrough.mov。
是否有一种简单的机制来强制更新缓存中的所有文件?
我在 SO 上找到了以下代码并将其包含在脚本中,希望它有所帮助。不知道它有多需要:(
html - 为什么我的缓存清单仍然不起作用?
我在 chorme 的控制台中观看,没有任何输出,也没有应用程序缓存,为什么会发生这种情况?谢谢
这是我的html:
这是 test.manifest 文件的内容:
这是我打印日志的 js 代码:
我在 chorme 的控制台中观看,没有任何输出,也没有应用程序缓存,为什么会发生这种情况?谢谢
firefox - Firefox 不会从离线缓存清单加载页面,但在 Chrome 上运行良好(+ 缓存清单故障排除提示)
这与尚未回答的 SO 问题基本相同:Offline Web App not caching on Firefox but ok on Chrome
我遇到了同样的问题,我将提供更多信息,因为它可能会帮助试图找出试图实现缓存清单的神秘奥秘和陷阱的人。
问题:点击页面重新加载/刷新,页面应该从离线缓存重新加载,但事实并非如此。
它在 Chrome 23 中运行良好:当我断开与 Internet 的连接并刷新页面时,它加载正常并且控制台显示 Application Cache NoUpdate 事件。
但是,Firefox 15.0.1 显示了我的 404 页面。
故障排除 (Firefox):转到 Firebug 并单击 DOM,然后单击 applicationCache。状态显示为 0,表示未缓存(页面尚未离线存储)。
故障排除 (Firefox):转到 Firefox 选项 -> 高级并查看离线 Web 内容和用户数据。它显示我的域正在使用 1.4MB 的数据供离线使用。(这是检查您的页面是否已被缓存的好地方)。
故障排除 (Firefox):打开一个新选项卡并转到 about:cache。在这里,您应该会看到离线缓存设备的标题。在这里您可以看到缓存目录,这是您的离线缓存文件的保存位置。如果您单击 List Cache Entries,您将在离线缓存清单中看到这些文件。
这里有两件事我觉得很奇怪:1)当我点击列表中的任何文件时,它会转到一个空白页面,上面写着“缓存条目信息您选择的缓存条目不可用”。但是,缓存目录中的文件确实存在并且不是空白 2)虽然列出了缓存清单中的所有文件,但我正在调用的页面未在此处列出(在 Chrome DevTools 中,它在清单中显示为Master:它会自动缓存,即使它没有在缓存清单文件中明确列出)。
这是我在线时看到的内容: 使用冷(空)缓存,当我加载页面时,控制台会显示检查、下载、进度和缓存事件,但缓存状态为未缓存。基本上,缓存文件已下载,但无法访问。Firebug DOM applicationCache 说:离线缓存中有 0 个项目(这与 about:cache 和 Options -> Advanced 中显示的内容相矛盾)。状态为 1,表示空闲。当我在线查看 Firebug 中的 Net 选项卡时,它会显示对页面的 GET 请求,响应为 200 OK。Expires 设置显示 Wed Dec 31 1969,我认为这意味着该页面将始终被获取。其他文件显示 304 Not Modified 响应,这意味着它们正在从浏览器缓存中加载,
当我离线时:使用“未缓存”缓存,GET 请求会失败,它会加载带有 200 OK (BFCache) 响应的离线回退 404 页面。
似乎下载了离线缓存,因为它物理存在于磁盘上,并且控制台中显示了进度事件,但 Firefox 从未触发缓存事件,因此某些资源没有成功下载。这些文件都是 png、js 或 php 格式,所以没有疯狂的文件格式。Chrome 可以毫无问题地将完全相同的文件下载到缓存中。我也尝试过移动 Safari,它成功地从离线缓存重新加载了页面。
Firefox 是否存在不缓存某些文件类型的已知问题?我在我的一些文件上使用了 .html.php 扩展名。我还使用 php 文件动态生成清单,因此它只获取存在的文件并将它们散列以检测更改并更新清单。
下一步:我将尝试一个简单的清单,看看我是否可以让它工作,然后一个一个添加文件,看看哪个文件触发了错误。也许 Firefox 不喜欢我动态生成缓存清单而不是手动更新静态文件的事实?
我学到了很多关于缓存清单的奥术复杂性,但我更像是一个黑客而不是计算机专家。有没有其他人在使用 Firefox 时遇到过这种怪癖?
页面开头:
然后 manifest.php 就是
等等等等。它使用 RecursiveDirectoryIterator 来获取目录中的所有文件(除了缓存本身,它默认包含)。
html - Control appcache download
I've developed an iPad web app that uses the appcache. It's not intended to be a fully offline app but I use the appcache to store large image files so that they're not sent over 3G. Problem is when the manifest is updated the appcache updates whether the iPad is on wifi or 3G, which could be expensive.
Is it possible to have the user decide if the appcache can be updated or not? From what I've seen, this isn't possible, it all happens automatically, you just get events. But perhaps there's some trickery like writing the manifest on the fly or similar.
Using PHP on the server side if that helps. Thanks.
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 主屏幕上失败。
html - HTML5 AppCache 和普通浏览器缓存有什么区别?
我不明白 HTML5 AppCache 的意义。我们已经有了一个普通的缓存。如果您第一次访问一个网站,它已经缓存了所有资产。AppCache 提供了哪些额外价值?它只是一个文件列表,以便浏览器知道要下载哪些资产,即使它们现在没有被 HTML 引用?浏览器是否确保缓存是“全有或全无”,即它是否确保清单引用的所有内容都被缓存,或者什么都没有?
asp.net - 使 ASP.Net (C#) Web 应用程序可脱机使用
我的任务是让我公司的 Web 应用程序可以离线使用。在进入实际开发阶段之前,我想确定我当前的策略不会失败。
我首先考虑使用 html5 应用程序缓存,但在做了一些测试后,我发现它似乎没有缓存服务器端操作,而是渲染的实际 html(如果我错了,请纠正我)。这将不起作用,因为呈现的 html 取决于当前登录的人。从我的测试中,它总是呈现 html,就好像最后一个登录(在线)的人正在登录一样。
我目前的策略是这样的:我只缓存登录页面和一个离线 (.html) 页面,以对应需要离线使用的每个 aspx 页面。每次成功登录(在线)都会创建或更新 Web SQL 数据库或 IndexDB(取决于浏览器),其中包含该人离线操作所需的所有数据,包括将用于登录凭据的表。这样,离线登录的唯一要求是使用您的登录凭据登录至少一次。
我担心的是我把它复杂化了。为了完成这项工作,我需要为每个当前页面(很多页面)创建一个 html 页面,并且我必须用 JavaScript 重写当前在服务器上完成的所有内容,包括验证、数据库调用、填充控件例如下拉列表和数据网格等。此外,我将来更改的所有内容都需要后续离线更改。
对于我正在尝试做的事情,我是否有一个既定的最佳实践,我正在忽略或者我正在冒险进入新领域?
android - Android Webview上的Appcache不下载源
我知道我的 web 应用程序的 appcache 运行良好,因为我已经在 Chrome 上尝试过它,即使在适用于 Android 的 Chrome 上它也可以工作,但是从 webview 将它加载到我的 Android 应用程序中时它不起作用。我有以下设置:
但是在加载应用程序时,在 logcat 中我可以阅读以下内容
10-15 01:21:43.815: E/SQLiteLog(14278): (1) 没有这样的表: CacheGroups 10-15 01:21:43.815: D/WebKit(14278): 错误: 10-15 01:21:43.815 :D/WebKit(14278):应用程序缓存存储:未能执行语句“DELETE FROM CacheGroups”错误“没有这样的表:CacheGroups”10-15 01:21:43.815:D/WebKit(14278):外部/webkit/Source /WebCore/loader/appcache/ApplicationCacheStorage.cpp(558) : bool WebCore::ApplicationCacheStorage::executeSQLCommand(const WTF::String&) 10-15 01:21:43.815: E/SQLiteLog(14278): (1) 没有表:缓存 10-15 01:21:43.815:D/WebKit(14278):错误:10-15 01:21:43.815:D/WebKit(14278):应用程序缓存存储:未能执行语句“DELETE FROM Caches”错误“没有这样的表:缓存”10-15 01:21:43.815: D/WebKit(14278):external/webkit/Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp(558) : bool WebCore::ApplicationCacheStorage::executeSQLCommand(const WTF::String&) 10-15 01:21:43.815: E/SQLiteLog(14278): (1) no such table: Origins 10-15 01:21:43.815: D/WebKit(14278): ERROR: 10-15 01:21:43.815: D/WebKit(14278): Application Cache Storage: failed to execute statement “DELETE FROM Origins”错误“没有这样的表:Origins”10-15 01:21:43.815: D/WebKit(14278): external/webkit/Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp(558) : bool WebCore ::ApplicationCacheStorage::executeSQLCommand(const WTF::String&) 10-15 01:21:43.815: E/SQLiteLog(14278): (1) 没有这样的表:DeletedCacheResources21:43.815:E/SQLiteLog(14278):(1)没有这样的表:起源 10-15 01:21:43.815:D/WebKit(14278):错误:10-15 01:21:43.815:D/WebKit( 14278):应用程序缓存存储:未能执行语句“DELETE FROM Origins”错误“没有这样的表:Origins”10-15 01:21:43.815:D/WebKit(14278):external/webkit/Source/WebCore/loader/ appcache/ApplicationCacheStorage.cpp(558) : bool WebCore::ApplicationCacheStorage::executeSQLCommand(const WTF::String&) 10-15 01:21:43.815: E/SQLiteLog(14278): (1) 没有这样的表:DeletedCacheResources21:43.815:E/SQLiteLog(14278):(1)没有这样的表:起源 10-15 01:21:43.815:D/WebKit(14278):错误:10-15 01:21:43.815:D/WebKit( 14278):应用程序缓存存储:未能执行语句“DELETE FROM Origins”错误“没有这样的表:Origins”10-15 01:21:43.815:D/WebKit(14278):external/webkit/Source/WebCore/loader/ appcache/ApplicationCacheStorage.cpp(558) : bool WebCore::ApplicationCacheStorage::executeSQLCommand(const WTF::String&) 10-15 01:21:43.815: E/SQLiteLog(14278): (1) 没有这样的表:DeletedCacheResourcesD/WebKit(14278): 外部/webkit/Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp(558): bool WebCore::ApplicationCacheStorage::executeSQLCommand(const WTF::String&) 10-15 01:21:43.815: E/SQLiteLog(14278): (1) 没有这样的表:DeletedCacheResourcesD/WebKit(14278): 外部/webkit/Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp(558): bool WebCore::ApplicationCacheStorage::executeSQLCommand(const WTF::String&) 10-15 01:21:43.815: E/SQLiteLog(14278): (1) 没有这样的表:DeletedCacheResources
显然 AppCache 不工作 =/ 我做错什么了吗?谢谢!