【问题标题】:Shorten page generation time for local jekyll server缩短本地 jekyll 服务器的页面生成时间
【发布时间】:2013-02-01 20:11:44
【问题描述】:

运行jekyll --server 时,会重建整个站点。在足够大的网站上,这需要非常长的时间。即使有 --auto 标志,它应该防止整个站点重新生成,完成时间相当长(对我来说 10 多秒,据报道在几分钟内)。这在编辑和预览单个页面时很不方便。我希望缩短那个时间。

有没有办法确定 Jekyll 重建页面所需的时间为何?

或者,是否有关于编辑工作流的建议,允许使用 Jekyll 进行更短的反馈循环?

【问题讨论】:

  • 您能否澄清一下您是否需要更短的构建时间来在本地预览您最近的更改(因此“预览构建”到本地主机:不需要包括所有帖子)?或者,如果您真的需要快速构建包含 1000 条帖子的部署?
  • 另外,--auto 标志仅在 jekyll --server 在更改期间已经运行时才有效。即,如果您的网络服务器一直在运行jekyll --server --auto,并且您将更改推送到它。 Jekyll 不会跟踪在后续调用 jekyll --server 之间哪些页面发生了变化。

标签: jekyll


【解决方案1】:

我无法解决构建完整网站所需的时间,但我想出了一种方法来显着加快起草文档和更改布局的速度。所有这些都假设您在本地机器上工作以进行编辑,然后部署到生产服务器。如果您有不同的流程,您的里程可能会有所不同。

核心思想是使用多个 jekyll 源目录,每个目录指向同一个输出位置。就我而言,我使用三个。一个用于起草和编辑帖子(称为“_drafts”),一个用于布局、设计和功能更改(称为“_dev”),最后一个包含整个网站的内容(称为“_main”)。

顶级目录结构如下所示:

./_drafts
./_dev
./_main
./html

每个 jekyll 源的 _config.yml 文件设置如下,将 jekyll 生成的输出指向“html”目录:

destination: ../html

“_drafts”和“_dev”目录包含使它们模仿“_main”站点的设计和功能所需的最少文件数。我在这两个目录中完成所有工作,jekyll 运行在任何正在处理的目录中。我的本地 Web 服务器设置为将本地域(例如 http://jekyll-test/)指向“html”目录,这样我就可以在进行更改时看到发生了什么。

完成编辑后,我将新更新的文件从“_dev”或“_drafts”复制到“_main”中的相应位置。文件准备好后,我会在“_main”中运行最后一次 jekyll。使用这种方法,您只需等待较长的站点生成时间,然后再将站点部署到生产环境。我已经使用这种方法一段时间了,发现它有很大的不同。

还有其他一些优化工作流程的方法:

  • 使用符号链接帮助保持“_drafts”和“_main”的设计和功能同步。

    如果您使用的是 Mac 或 linux 机器,请将符号链接设置为指向 ./_drafts/_config.yml./main/_config.yml./_drafts/_layouts./main/_layouts(类似的功能可能存在于 Windows 上,但我不能说) .出于某种原因,jekyll 不适用于某些符号链接的目录。例如,在我的安装中,我有一个不能用作符号链接的根级“css”目录。我必须在所有位置都有它的实际副本。

  • 创建一个部署脚本。

    当我准备好部署时,我不会直接运行 jekyll。我在“_main”目录中编写了一个调用 jekyll 的小脚本,将输出同步到我的生产服务器,然后在完成时通知我。这不仅节省了在 jekyll 上等待的时间,还减少了部署站点所需的步骤。

  • 构建其他脚本和工具。

    从“_dev”和“_drafts”目录复制文件没什么大不了的,但它是添加一些自动化的主要地方。例如,我有一个命令行脚本,它将“_config.yml”文件以及“_layouts”和“css”目录从“_dev”复制到“_drafts”和“_main”(根据需要)。

    案卷上的另一个工具是本地网络应用程序,它将帖子从“_drafts”移动到“_main”。任何使文件移动更容易并减少创建和发布的摩擦的东西都是好的。

  • 使用 LiveReload

    在本地运行,jekyll --auto 非常适合在处理文件时自动生成更改。与之自然搭配的是一个名为LiveReload 的应用程序。它监视您的本地“html”目录并在内容更改时触发浏览器的自动重新加载。这样做的目的是您可以将浏览器窗口保留在文本编辑器旁边,并在保存文件时自动查看更改。时不时会有点片状,但用了之后,你不知道没有它你是怎么活的。

【讨论】:

  • 这很整洁。当下一次“我们应该限制编译时间”的讨论出现时,我会建议 jekyll 的人考虑这个想法。 :)
【解决方案2】:

这是Jekyll's issue tracker on Github 中经常出现的主题。不幸的是,这不是目标之一。例如:

只需搜索“编译”和“时间”这两个词,您就能找到更多信息。这比看起来要难一些,因为存在链接断开的可能性。

另外,如果您使用的是 LSI,请使用最新版本,因为有一个与之相关的修复程序可以使它更快。

我给你的唯一建议是看看你是否真的需要所有这些帖子(我知道,我知道),因为这可能是你现在从问题跟踪器中得到的唯一答案——我们都想要的地址,但没有人想开始。

P.S.:请将您的问题发布到问题跟踪器上——抱怨的人越多,解决问题的可能性就越大。

【讨论】:

  • 有没有人有任何运气或更好的想法来加速生成?
  • 我不知道。
猜你喜欢
  • 1970-01-01
  • 2013-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多