问题标签 [application-cache]
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.
html - 如何为国际化网站提供离线应用程序缓存清单?
我有一个网站,其中 URL 包含区域设置信息,客户端的标头 Accept-Language(或每个页面上的选择框)选择语言并重定向到当前页面的本地化 URL。默认的英文 URL 是:
http://example.com/
站点页面的区域设置特定版本包含区域设置值:
http://example.com/de/
或http://example.com/es/
等。
我想就如何在这种情况下处理指定离线应用程序缓存清单提出建议。我希望根据用户的 URL 缓存离线页面的本地化版本。即用户登陆英语页面然后选择西班牙语将(重新?)下载西班牙语清单中指定的西班牙语 URL。
我应该为每个语言环境(例如 en.manifest、es.manifest)的根页面以不同的方式命名清单文件吗?或者,如果我在每个语言环境的根 URL 上使用相同命名的清单,如果用户更改为具有不同语言环境的页面(以及可能不同大小的清单文件 - 网络服务器将指定不缓存清单文件),它将被重新读取(s))? 或者,如果用户更改语言环境,我是否必须通过 JavaScript 显式加载特定于语言环境的清单?
我担心访问者会开始下载默认英语清单中指定的 URL,然后选择他们的首选语言环境,而不是触发读取新的语言环境特定清单,也不会为所选语言环境的清单加载 URL。
我已经进行了一些搜索,但没有遇到任何关于这种情况的讨论。
ios - iPhone Offline Web Apps 和 Safari 是否共享同一个 HTML5 应用程序缓存?
我有一个旨在用作 iOS 离线网络应用程序的网络应用程序。该应用程序的一个关键功能是用户可以下载带有 .doc、.ppt、.pdf 等扩展名的文件。为了使这些文件可以离线使用,我在缓存清单中为任何此类文件创建条目。
另一个警告:我可以打开这些文件的最用户友好的方式是跳出离线网络应用程序并进入 Safari 以实际打开文件。这样,我得到了 Safari 提供的“在 {{Application}} 中打开”选项。在从离线 Web 应用程序切换到 Safari 的过程中,似乎存在某种断开连接。
假设一张白纸:
- 我已经使用设置->Safari->高级擦除了该站点的所有数据。
- 我在连接到服务器时启动了离线网络应用程序(所以我们处于在线模式。)
- 应用程序成功更新缓存。
- 我关闭 Web 应用程序并断开与服务器的连接。
- 我重新启动应用程序,所有导航栏都正常工作,所以我们知道缓存运行正常。
- 我单击链接打开需要 Safari 的文件,因此 iOS 切换到 Safari 并转到文件的 URL。
- Safari 显示“Safari 无法打开页面,因为找不到服务器。”
那么,似乎可以从离线 Web 应用程序访问此应用程序缓存,但不能从 Safari 访问?任何人都可以验证这一点吗?
然后继续前进,如果情况确实如此:有什么更好的方法吗?谢谢!
html - HTML5 Manifest 只看到后备
大家好,我的清单如下:
我已经修复了一个随机随机问题,即 safari 无法在没有 NETWORK * 的情况下加载谷歌地图。我现在想要做的是确保如果有人离线,他们只会点击该 offline.html 页面,我注意到有时可能会点击一个常规页面,这看起来很糟糕,然后你只会被转移到后备页面请求另一个页面后。我需要在这里添加什么吗?
javascript - 如何确定applicationCache是否已在Firefox中获得批准
目前,当您尝试通过在 html 标记中指定应用程序清单来使用它时:
Firefox 将提示您允许它(是/否/不再允许)。
如何检查该请求是否已被批准/拒绝?
html - 如何使用 HTML5 应用程序缓存保留 SSL
我有一个在 http 和 https (SSL) 上运行良好的现有网站。SSL 证书有效,可通过浏览器查看确认。
我开始使用清单文件在我的网站上启用 HTML5 应用程序缓存。这对于加快页面加载速度以及最终实现离线功能很有用。这在使用常规 http 连接时效果很好。通过 https (SSL) 访问站点时会出现问题。当我这样做时,我可以很好地访问我的网站内容,并且 URL 显示“https”但是我看到以下行为:
Safari:它显示锁定图标,但是当我单击锁定图标检查证书时,它说证书无效。
Firefox:不显示加密的彩色地址栏,检查证书时说没有证书。
Chrome 和 Opera:正确显示 URL 的安全特性,单击锁定图标时会显示 SSL 证书信息。是的!
我了解使用应用程序缓存会导致资源从浏览器本地提供,因此不会发生加密,但是客户不一定知道后台发生了应用程序缓存,他们希望看到有效的 SSL 证书和连接安全的指示。除非我遗漏了什么,否则 Safari 和 Firefox 似乎做错了。那是我的问题。有谁知道如何让 Safari 和 Firefox 显示从应用程序缓存提供的页面的 SSL 证书?您是否需要做一些特别的事情,或者是 Safari 和 Firefox 的错误?
html - 应用程序缓存和 404/500 页面
我有一个清单,看起来像这样:
问题是我的 /404.html 和 /500.html 页面(显然提供了 404 和 500 的响应代码)正在触发回退。它们的行为就像服务器离线一样。
我的问题是双重的:
- 为什么 /404.html 当 /events 没有触发回退?
- 如何允许 /404.html 和 /500.html 在仍然允许 / 的同时不触发回退
触发它。
对于它的价值,我已经尝试过这个:
...但是,由于这些页面是使用非 200 响应代码提供的,因此它会触发应用程序缓存错误回调并且不会保存缓存。
谢谢!
javascript - iOS 5 Mobile Safari 应用程序缓存更改?
我想知道是否有人在 iOS 5 设备上的 Mobile Safari 中使用 HTML5 应用程序缓存时遇到了新问题?我之前编写了一个在 iOS 4 中运行良好的离线 Web 应用程序,但是随着使用此应用程序的设备被转移到 iOS 5,我发现设备离线时出现问题并尝试访问应该缓存的资源。
我可以确认应用程序缓存过程按预期工作,因为当设备在线时下载资源时,我可以跟踪对我的网络服务器的点击。
当我尝试点击链接到应在离线时缓存的页面时,问题以“无法打开页面:Safari 无法打开页面,因为它未连接到 Internet”对话框的形式出现。
有趣的是,大约在弹出此错误的同时,在调试控制台中也会出现“JavaScript 执行超出超时”错误,类似于此线程中提到的内容。我没有做任何计算几乎像那里发布的那样复杂,但是杀死并重新启动 Safari 的建议似乎解决了这两个问题,至少现在是这样。
因此,也许这个问题与其说是请求帮助,不如说是未来搜索者分享经验的着陆点。
javascript - 供离线使用的 MDN javascript 文档
我正在尝试使MDN 的 Javascript 参考可用于离线浏览(个人使用)。
我不是该网站的所有者,也不是开发人员,我只能访问其生成的输出。
我的第一个想法是在页面中注入 HTML5 appcache.manifest
;使用manifestR我生成了一个页面资产列表。
然后我尝试使用协议指向我的本地清单文件file:///
,使用http://
协议,最后使用base64 string
,代表文件的内容(data:text/cache-manifest,
)。似乎没有任何效果。
在谷歌搜索了一下之后,我偶然发现了他们的公共 FTP。还没有完全爬过它。但仍然没有找到任何提及js 文档的内容。
我考虑过使用浏览器的另存为命令来保存 HTML 页面;但我宁愿开发一个基于 javascript 的爬虫,也不愿单独保存每个页面。
在哪里可以找到 MDN Docs 的离线版本?或者我如何在离线时浏览 MDN 文档?
application-cache - 每个域的应用程序缓存存储空间是否受到限制
我对 HTML5 应用程序缓存有一个愚蠢的怀疑。这是一个问题:如果我在域 1和域 2中都使用应用程序缓存。如果域 1使用 4.9MB 而域 2想要存储 2MB 数据。可以储存吗?应用程序缓存实际上在哪里存储数据?在硬盘或其他地方???