问题标签 [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 - 当我的主页只是 `/` 时,如何为我的主页设置 HTML5 离线后备?
作为一个现代数据库驱动的网站,我们的主页只是简单地/
代替了/index.html
. 但是当我尝试为我们的主页设置离线后备时,它(按照规范的预期)为网站上的每个资源设置了后备。除了改变回家的道路外,有没有办法防止这种情况发生?
html - 为什么我的缓存清单仍然不起作用?
我在 chorme 的控制台中观看,没有任何输出,也没有应用程序缓存,为什么会发生这种情况?谢谢
这是我的html:
这是 test.manifest 文件的内容:
这是我打印日志的 js 代码:
我在 chorme 的控制台中观看,没有任何输出,也没有应用程序缓存,为什么会发生这种情况?谢谢
html - ApplicationCache 不会缓存任何东西
我正在尝试使网络应用程序在离线时可见。
- 我
index.html
像这样引用清单:<!DOCTYPE html manifest="manifest.appcache">
- MIME 类型正确:my
.htaccess
hasAddType text/cache-manifest .appcache
这manifest.appcache
看起来像:
但是,没有缓存任何内容。
当我applicationCache.status
在 javascript 控制台中调用时,它会返回(我认为如果成功0
应该返回)。在 Chrome 中,查看还显示没有应用程序缓存。1
chrome://appcache-internals/
我究竟做错了什么?
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 来获取目录中的所有文件(除了缓存本身,它默认包含)。
android - HTML5 中的应用程序缓存在 Android PhoneGap 应用程序中不起作用
我正在尝试将 HTML5 中的应用程序缓存用于 Android PhoneGap 应用程序,但这不起作用,ApplicationCahce 事件感觉不到。
此外,此代码在 iOS PhoneGap 和 Android 浏览器中运行,此链接用于支持的平台。 Application Cahce 支持的平台
因此,任何建议都会有所帮助。
html - html5 应用程序缓存 joomla 网站
我们基于我们定制的 Joomla 安装为我们的客户建立了多个网站。
我们必须支持回到 ie7,但我想开始让这些网站离线可用。人们是否认为这是一个好主意,因为这不是一个应用程序?
此外,人们如何看待这将与半定期更改的内容一起使用?
我欢迎你的想法?
谢谢
html - HTML5 应用程序缓存 - 缓存文件不会更新,即使清单已更新
我有一个版本化的缓存清单:
每次此版本更改时,我的 webapp 都会加载新的清单,但它永远不会从服务器加载更新文件。即使我清除了浏览器缓存(不是应用程序缓存本身),或者按 Ctrl+Shift+R 强制它获取新版本,它仍然会从旧的 appcache 加载文件。
我可以让它更新的唯一方法是在设置中清除浏览器的应用程序缓存,但显然这是不可接受的,因为我需要它为普通用户更新。
任何想法为什么会发生这种情况?
html - 离线时ApplicationCache和错误
我有一个运行良好的 HTML5 离线应用程序,缓存验证,并且它通常工作,直到我真正强制设备(或计算机)离线。
我有一个附加的处理程序,window.applicationCache.onerror
因此我可以处理并提示可能发生的任何随机错误:
然而,这个错误处理程序也会在设备离线时触发,这会抛出错误对话框,而实际上它不应该。
这吐出的 JSON 如下:
对于我可以寻找什么来处理这种特殊情况,我在这里看不到任何明显的东西。我应该忽略基于此处某些内容的错误,还是完全做其他事情?
html - 检查浏览器是否禁用了离线应用程序缓存
所以我有一个使用ApplicationCache 存储离线数据的应用程序。长话短说,对于没有启用离线数据的用户来说,它正在悄然消亡,最常见的是因为他们关闭了历史记录或正在使用隐私浏览,我想抓住这一点并给用户一个明确的错误。
看来这可以通过检查缓存的状态来检测,当没有缓存时它将返回 0 UNCACHED
......但我不确定这是否意味着还没有缓存,或者没有保证缓存(并且因为应该有,有问题)。官方定义用处不大:
但实际上,cache.status==0
至少在 Firefox 上中止似乎可以正常工作。我做得对吗,还是有更好的方法?如果有人可以挖掘状态图,则加分。
更新:不,如果用户以前从未访问过该页面,它也会返回 0/UNCACHED。嘎!
html - 应用程序缓存在 Tomcat 6.0 中有效,但在 weblogic 10.3 中无效
我正在使用应用程序缓存,我面临以下问题:
在 Tomcat 服务器中:
当服务器在线并且第一次访问该页面时,清单文件中指定的文件被成功捕获到应用程序缓存中。
当服务器离线时,当我们尝试访问缓存页面时,浏览器控制台出现错误(Application Cache Error event: Manifest fetch failed (-1)
根据我在互联网上的发现,这很正常),但应用程序缓存工作正常。
在 Weblogic 服务器中:
我尝试在 Weblogic 服务器中运行相同的代码,在在线模式下,文件按预期缓存。但是在离线模式下,第一次加载页面时,它工作正常,但是当我看到控制台时,应用程序缓存的状态变为 OBSOLETE 模式,所以如果我再次刷新页面,它会抛出我404 错误。另外,"Application Cache Error event: Manifest fetch failed (-1)"
当我尝试在 tomcat 服务器中运行代码时,我没有得到我得到的结果。请让我知道我做错了什么。以下是文件:
索引.html
清单文件(demo.appcache)
样式.css
脚本.js
web.xml