问题标签 [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.
performance - 使用 HTML5 缓存清单来提高性能?
当我有一个想法时,我正在阅读Dive into HTML5: Offline web apps: Cache manifests 。我可以使用它(HTML5 缓存清单)来缓存文件(例如 CSS/JS/图像/等)以实现离线功能。也是为了性能。用户再次访问您的网站时不需要加载这些文件?还是它(缓存清单缓存的文件)仅在离线模式下工作?
html - HTML5 缓存清单:后备部分和网络 *
从Dive into HTML5: Cache Manifest: Fallback section
鉴于此代码块的确切作用,我无法从 URL 中理解。后备部分是否意味着找不到任何内容时,显示offline.html
页面
那么network: *
所有资源都会被缓存?它还说
它在每个页面上使用常见的 CSS、JavaScript 和图像。这些资源中的每一个都需要在
CACHE
这似乎与network: *
似乎说缓存所有内容的地方相冲突?
html - 在 HTML5 离线缓存中延迟加载非 HTML 页面
HTML5 Offline Web 应用程序规范提供了一个如何将 HTML 页面延迟加载到缓存中的示例:
这在Dive Into HTML5中以 Wikipedia 为例进行了解释:您当然不想在网站加载时缓存整个 Wikipedia,但您希望用户访问的任何页面都被缓存。用户在离线时访问的任何页面都应显示自定义错误页面。
这种方法的诀窍是每个 HTML 页面都明确地包含清单。任何包含清单的页面都会自动包含在缓存中,无需明确提及。所以这个例子会从网络加载HTML页面,并插入到缓存中,如果离线,缓存中的任何页面都可以工作,任何未缓存的页面都会默认为offline.html页面。
问题在于非 HTML 文件,它们无法包含清单。具体来说,我正在用 JavaScript 编写一个游戏,它有很多音乐曲目。我有以下要求:
- 我不希望用户在游戏加载时必须下载所有音乐,
- 如果用户在线时遇到新的音乐曲目,则应下载并缓存该曲目,
- 如果用户在离线时遇到新的音乐曲目,他们是否听到静音并不重要。
- 如果用户在离线时遇到他们已经听过的音乐曲目,则应从缓存中播放。
如果音乐文件是 HTML,我可以使用上述技术,并给它们一个manifest=...
属性,以便在它们第一次加载时将它们放入缓存中。但它们不是 HTML,所以我不能这样做。有没有办法让非 HTML 资源在加载时保存到缓存中,但不是提前?
注意:我对传统的 HTTP 缓存机制不是很熟悉。有可能可以改用它,但根据我的经验,即使文件被浏览器缓存,如果浏览器离线,它们也不起作用。如果可以这样做,我应该如何配置缓存头?
html - HTML5 离线存储 - 缓存清单网络
我正在尝试编写清单文件,但我在 FF5 中遇到了奇怪的问题,尽管我说不要这样做,但它的缓存仍然存在。我的清单文件如下所示:
有任何想法吗?
html - HTML5 更新离线缓存
如何更新离线缓存?我在服务器 html、css、js、图像(文件夹)和清单文件上有五个文件。我对 css 文件进行了一些更改,并将其替换为较旧的 css,但在页面加载时它没有影响。它显示了第一次缓存的旧数据,因为我将 URL 嵌入到 iPad 应用程序中。
html - 如何逐个用户支持多个自定义缓存清单以供离线使用?
我的应用程序使用项目的概念,每个项目都有多个需要离线提供的支持文件(主要是图像文件和 pdf)。我想使用 HTML5 缓存清单来完成此操作。
如果我在缓存清单中包含所有项目的所有支持文件,那将是庞大且不可行的。(即移动设备上没有足够的空间,这完全是矫枉过正,用户只需要他们被分配到的项目的支持文件)
用户被分配给项目,所以理想情况下,我可以为每个用户拥有一个自定义缓存清单文件,其中包含用户被分配到的项目所需的支持文件。
我怎样才能做到这一点?有没有办法在浏览器加载初始页面后分配不同的缓存清单?
如果没有,实现此功能的另一种方法是什么?
ruby-on-rails-3 - 使用资产管道缓存清单
使用 rails 资产管道拥有 html5 缓存清单的最佳方式是什么?我正在考虑向 app/assets 添加一个 erb 文件,其中包含所有资产的路径。这可行,但马上就有几个问题:
- 我怎样才能增加版本号?
- 如何确保正确设置了 http 内容类型?
html - HTML5 缓存——单个 URL 是否可以有多个不同的缓存?
每个 URL 都可以链接到一个缓存清单。但我想要几个链接到同一个 URL 的缓存清单。原因如下:
我想要缓存的一些文件很少更新且很大。因此,每次缓存更新时,这些大文件都会重新下载,即使它们可能没有更改。所以我想拆分缓存。一个缓存用于这些很少更新的大文件,另一个缓存用于经常更新的轻文件。
你们知道如何拆分 HTML5 缓存吗?
ios - 移动 Safari:音频 + 缓存清单
我有一个小型网络应用程序,只需单击几个按钮即可播放非常短的声音片段。它明确针对 iOS (iPad) 上的移动 Safari。
在此处和其他地方阅读了有关移动 Safari 在此上下文中 HTML5 音频的几个“缺点”并尝试了一些“黑客”和技巧之后,我陷入了 Safari 看起来很简单的情况(因为没有更好的词)破碎的:
我可以通过单击按钮 A 播放声音 A(它需要很长时间才能开始 - 我假设它正在下载 [再次]?)。然后,单击按钮 B 将立即再次播放声音 A。按钮 C 也是如此。在某些情况下,它会播放不同的声音,有时甚至是正确的声音。但主要是声音 A。使用的格式是 .aiff,现在是 .m4a 。
在自己编写了几个小版本之后,我决定使用Buzz库来处理声音加载/播放/等。
有趣的是,他们的演示包括一个游戏,它几乎完全符合我的需要并触发了相同的错误行为。我什至遇到了这样一种情况,即移动 Safari 中任何选项卡中的任何音频播放器都会在 Buzz 演示游戏中播放某种声音(!)。
我希望缓存清单可能有助于克服 Apple 的预加载限制,并强制应用在离线模式下按下按钮后立即播放声音。但是在确认整个应用程序已被缓存后,我无法在离线模式下播放/听到任何声音。
有没有人设法让这样的事情以某种方式工作?(——虽然看过 Apple 如何处理某些事情,但我不希望得到太多回应……)
更新1:
此答案中的示例会产生相同的效果:How to synthesize audio using HTML5/Javascript on iPad
更新 2:
更新 iOS(以及 Safari)似乎可以解决音频错误。不过,缓存清单似乎不会影响音频文件。这些文件根本不可用。
删除缓存清单后,应用程序可以正常工作,但将其添加到“主屏幕”并重新加载它也会阻止音频播放。
iphone - 缓存清单没有在 iPhone 中立即刷新
我正在尝试使用 iPhone 上的缓存清单的站点。我已将以下内容添加到我的 .htaccess 文件中,以防止浏览器缓存清单文件:
如果我更改了其中一个页面并向清单文件添加了注释,我仍然需要多次刷新页面才能看到任何更改。
如果我将站点添加到我的 iPhone 桌面,对服务器上的站点进行更改,然后从快捷方式加载站点,我需要手动刷新一次才能看到更改。
真实站点如何解决此类问题?假设我创建了一个单页网站,其功能类似于本机应用程序,但我希望它在互联网连接可用时在后台自行更新,我该怎么做?我需要让我的用户手动刷新页面吗?谢谢