小编Ste*_*nti的帖子

服务工作者和sw-precache提供"新版本"

我正在尝试使用sw-precache,但我一定做错了!

我主要使用github repo提供的演示代码,似乎无法获得应用程序的更新.一旦它第一次被缓存,它就永远不会检查新版本.

我期待当我发布新的服务工作者时,浏览器会请求新的服务工作者并在后台相应地更新缓存.然后使用示例中注册代码,我将能够提示用户刷新并从其新刷新的缓存中获取最新版本.

如果有人能指出我正确的方向,我真的很感激.

为了演示这个问题,我在这里创建了一个独立的例子:https: //github.com/stevenocchipinti/sw-precache-demo

该示例使用一个基本框架,create-react-app其中有一个内置构建任务,负责指纹识别文件名等.

我怀疑问题在于我使用以下sw-precache配置缓存所有内容:

{
  "staticFileGlobs": [ "build/**/*.*" ],
  "stripPrefix": "build/"
}
Run Code Online (Sandbox Code Playgroud)

回购自述文件中有更准确的步骤,但我重现问题的基本步骤如下(我的预期可能不正确).

步骤和假设

  1. 浏览到
    我应该Content is now available offline!在控制台中看到的第一个应用程序

  2. 重新加载页面
    控制台中的消息不应再次出现,因为已安装服务工作者,但该页面仍应有效.

  3. 离线并重新加载页面
    页面应该仍然有效

  4. 对源代码进行可见的更改

  5. 重建(运行构建任务和sw-precache)

这是我的理解一定是错的

  1. 重新加载页面

    • 服务工作者应该在后台更新缓存
    • 完成后,您应该New or updated content is available.在控制台中看到
    • 在下次重新加载之前,不应看到实际的可见更改
  2. 重新加载页面

    • 这次浏览器将使用新的缓存
    • 现在可以看到这些变化!
    • 控制台中不应该有任何消息

问题

一旦应用程序最初被缓存,除非取消注册服务工作者或强制重新加载,否则它永远不会更新.

我不确定如何使这项工作 - 任何帮助将不胜感激!

caching offline service-worker progressive-web-apps sw-precache

7
推荐指数
1
解决办法
2199
查看次数

镜像网站并维护 URL 结构

目标

我想要镜像一个网站,这样我就可以在任何地方(localhost、S3 等)托管静态文件,并且 URL 将像原始文件一样显示给最终用户。

命令

这几乎完美地满足了我的需求(...但不完全是):

wget --mirror -nH -np -p -k -E -e robots=off http://mysite
Run Code Online (Sandbox Code Playgroud)

这是做什么的

  • --mirror:递归下载整个站点
  • -p:下载所有必需的页面必需品
  • -k:将 URL 转换为相对路径,以便我可以在任何地方托管它们

这不做什么

  • 防止重复下载
  • 保持(完全相同)相同的 URL 结构

问题

有些东西被下载多次,这会导致myfile.htmlmyfile.1.html。这也不错,只是当 wget 重写超链接时,它是用版本来编写的myfile.1.html,这会改变 URL,因此有 SEO 考虑(Google 会索引丑陋的 URL)。

-nc选项可以防止这种情况发生,但从 wget-v1.13 开始,我无法同时使用-k和。-nc详细信息请参见此处

帮助?!

我本来希望使用 wget,但我现在正在考虑使用另一个工具,例如 httrack,但我还没有任何经验。

任何关于如何实现这一目标的想法(使用 wget、httrack 或其他任何东西)将不胜感激!

wget mirroring

5
推荐指数
1
解决办法
4066
查看次数

Rails3:用Ancestry Gem避免选择n + 1?

要求:

我正在构建一个任务列表应用程序,并希望任务能够具有子任务.
我还希望任务能够同时存在于树中的多个位置,例如,如果我有2个任务:

  1. 养狗窝
  2. 提出新的围栏

如果我计划用与围栏相同的材料建造狗窝,这两项任务都会有一个"购买栅栏"的子任务.

我有问题的实施(反馈欢迎):

我有2个型号:

  • 节点(has_ancestry和belongs_to:任务)
  • 任务(has_many:节点)

这意味着树(允许我有子任务)不会自己存储任务,只是对任务对象的引用.

以下是使用rails控制台的示例:

t1 = Task.create :name => "Build dog kennel"
n1 = Node.create :task => t1

t2 = Task.create :name => "Put up new fence"
n2 = Node.create :task => t2

t3 = Task.create :name => "Buy fence palings"
n11 = Node.create :task => t3, :parent => n1
n21 = Node.create :task => t3, :parent => n2

t4 = Task.create :name => "Construct the fence"
n22 = Node.create :task => …
Run Code Online (Sandbox Code Playgroud)

nested-sets ruby-on-rails-3

3
推荐指数
1
解决办法
1847
查看次数