- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试从 AppCache 迁移到大型框架的 Service Worker(Construct 2 - 请参阅 www.scirra.com)。很容易找到有关如何使用 Service Worker 缓存资源列表然后在 fetch 事件中响应缓存条目的示例。但是,我发现 AppCache 有两个特性很难用 Service Worker 复制:
这两个都需要识别索引页(#2 会在请求索引页的同时检查更新)。然而,我发现自己陷入了看似不雅的解决方案。请注意,如果请求“foo/”,许多服务器会返回“foo/index.html”,但其他服务器不会,还有一些服务器使用动态路径,因此我无法列出任何硬编码的主页 URL。我必须通过当前页面的 URL。
对于 #1,我在“安装”事件中使用 skipWaiting(),在“激活”中使用 claim() 客户端,clients.matchAll() 迭代每个客户端,然后将 client.url 添加到缓存中。好像有点啰嗦,难道没有办法在install事件中获取主页URL吗?
对于 #2,我必须在每个获取事件中调用 clients.matchAll() 并测试当前请求 URL 是否与任何客户端 URL 匹配。如果它是主页,我检查更新,否则正常处理。这看起来真的很不优雅,因为在页面加载时发生的数百个获取请求中的每一个都必须不断获取所有客户端的列表并匹配他们的 URL。
难道没有更好的方法从 service worker 获取主页的 URL 吗?
最佳答案
我建议加入 sw-precache
进入您的构建过程。它会为您生成一个服务 worker 脚本,负责预缓存您关心的资源,并在构建过程中检测到更改时维护缓存(更新/添加/删除)条目。
有 some support在 sw-precache
中用于预缓存依赖于多个底层模板文件的 URL,但您也可以将 sw-precache
与 additional runtime service worker 结合使用逻辑。 sw-toolbox
是一个很好地补充 sw-precache
并实现各种运行时缓存选项的库。
即使您不直接使用 sw-precache
,您也可以在自己的 service worker 中遵循以下从其代码中提取的一些模式:
Add如果请求 URL 以 /
结尾,则将索引文件(如 index.html
)添加到请求 URL。 (在服务 worker 中使用 Cache Storage API 时,规范化用作键的 URL 始终是个好主意。)
依靠service worker lifecycle触发缓存管理而不是获取带外“ list ”。当您的浏览器注意到您的 service worker 脚本发生变化时,它会触发一个 install
事件让您有机会缓存新条目,并触发一个 activate
事件给您一个机会做缓存清理。这意味着只要您的缓存条目发生更改,您的底层服务 worker 脚本就会更改。一种直接但容易出错的方法是包含一个 version string在您的服务 worker 脚本中内联。一种不太容易出错的方法是在您正在缓存的基础资源发生变化时自动修改您的服务 worker 脚本,这就是 sw-precache
为您所做的。在您的受控页面中,您可以 listen for specific service worker lifecycle events并显示“有新内容可用;请刷新!”消息之类的。
关于javascript - 从 Service Worker 获取主页 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33105301/
如果应用程序是通过企业签名分发的,那么是否有任何框架允许我在后台接收Home 或Power 按下事件? 最佳答案 iOS 中的所有事件都是 UIEvent,它是 GSEvent 的包装器。通过一些技巧
版本为 1.4.1.4 的 Prestashop 网站使用 category.php 文件作为类别页面。不幸的是,1.6.0.6 的更新删除了该文件,因为它已被视为已弃用。 ( URL structu
我最近在 Github 存储库中为我的公司创建了一个全局 wiki。这是一个空的存储库,我创建它只是为了使用它的 wiki。 我的问题:在这个 wiki 存储库的首页上,显示了自述文件。这个自述文件是
我有一个非常简单的体育网站,主页上有不同运动的链接,如足球、篮球、无挡板篮球等。我想要的是当用户点击 Football 时,要存储的值,以便下次访问者访问该页面时它将打开足球页面。 到目前为止,我已经
我已经实现了onOptionsItemSelected来控制主页按钮: override fun onOptionsItemSelected(item: MenuItem): Boolean {
我不知道如何为匿名用户隐藏主页选项卡,Plone 版本是 4.3.7。最好隐藏导航栏,我发现可以通过 ZMI Portal_actions/portal_tabs/index_html 来做到这一点,
我正在尝试通过修改注册表来更改 IE 主页。我已经使用 bat 文件成功完成了此操作; REG ADD "HKCU\SOFTWARE\MICROSOFT\INTERNET EXPLORER\MAIN"
我已经使用 Spring Roo 生成了一些页面,我需要在应用程序的主页上显示数据库中的一些项目。那么我如何将带有数据的模型传递到主页,Roo 添加了以下行,我已注释掉 我使用 Roo 创建
我有 HomeController 类: @Controller public class HomeController { @RequestMapping("/") public S
用户按下“主页”按钮时,我需要显示退出确认对话框。如果是,则需要退出该应用程序。 按下“主页”按钮时是否可以显示? 最佳答案 这可能会导致您的应用被拒绝 从Apple HIG: 总是准备停止 当人们按
我只是想知道是否有人在Magento中格式化面包屑有任何经验? 我想用图片替换当前显示文本“HOME”的链接。 我以为用图片替换某些文本是一种简单的情况,但是似乎“HOME”文本/链接是动态创建的,因
我制作了登录功能,因此当用户登录时,它将导航到其他页面,但问题是登录成功后,用户只需按物理后退按钮即可再次返回登录页面。现在我想要的是登录后用户无法再次返回登录页面,因此当按下物理后退按钮时,它将关闭
我有 2 个 Activity ,1 个用于注册,1 个用于我的应用程序主页。现在为了在它们之间做出选择,我必须创建另一个 Activity 来检查一些细节并决定去哪个 Activity 。问题是,在
public void onBackPressed() { Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCa
实际上我正在开发一个应用程序,这个应用程序应该在安装的设备上打开,这样我就可以阻止/禁用返回、主页、多任务的物理按钮。 我已经阅读了一些关于如何做到这一点的文章,但仍然不知道如何在我的应用程序中实现它
我在浏览器中输入以下 URL http://localhost:8081 并以连接错误告终。使用 catalina 脚本启动 tomcat 后,我得到一个空白页面。有人知道为什么会这样吗? 最佳答
我正在尝试在 Eclipse 中设置一个 spring mvc 项目。我创建了一个动态 Web 项目并创建了源和配置文件。当我在由 eclipse 启动的 tomcat 上运行该项目时,我总是遇到 4
我在Tomcat中部署了我的应用程序,应用程序路径是: http://localhost:8080/myapp 但我想限制我的用户看不到 Tomcat 主页,即如果他们输入: http://local
在创建一个 vue nativescript 应用程序并通过以下方式运行之后: tns preview 我得到: *** Terminating app due to uncaught excepti
与其说我是网页设计师,我更像是一个程序员,我正在尝试做一个简单的(我认为)设计,比如 gmail 的主页 https://mail.google.com/intl/fr/mail/help/about
我是一名优秀的程序员,十分优秀!