【问题标题】:How to speed up Jekyll/Octopress generation?如何加快 Jekyll/Octopress 的生成速度?
【发布时间】:2012-11-04 09:20:39
【问题描述】:

我使用 Octopress 作为我的博客引擎。这是完美的。但是如果帖子很多,比如400+帖子,生成速度就太慢了。

那么,有什么方法可以加快 Jekyll/Octopress 的生成速度?

谢谢。

【问题讨论】:

  • 我也很想知道这个!但我已经知道isolateintegrate 做了什么,所以希望有人会发布一个答案,如何使用generate 命令只生成新的东西!
  • 我使用 Jekyll 而不是 Octopress,但我提出了一个有助于加快编辑和设计更改的流程。这个想法是处理可以快速生成的文件子集,并且仅在部署之前生成完整集。同样的方法可能适用于 Octopress。你可以在这里看到我对这个过程的完整描述:stackoverflow.com/a/14674402/102401

标签: ruby jekyll octopress


【解决方案1】:

显然,如果您只是在处理一篇文章,则无需等待整个网站生成。您正在寻找的是 rake isolate[partial_post_name] 任务。
使用rake isolate,您可以仅“隔离”您正在处理的帖子并将所有其他帖子移至source/_stash 文件夹。 partial_post_name 参数只是帖子文件名中的一些单词。例如,如果我想将帖子与前面的示例隔离开来,我会使用

rake isolate[plain-english]  

这会将所有其他帖子移至source/_stash,并且仅将2011-09-29-just-type-the-title-of-the-post-here-in-plain-english.markdown 帖子保留在source/_posts 中。您也可以在运行rake preview 时执行此操作。它只会检测到巨大的变化,并且从那时起只会重新生成该帖子。

@Pavan Podila
更多信息:Tips for Speeding Up Octopress Site Generation

2013.01.08 更新:
Hexo--一个快速、简单、强大的博客框架,由 Node.js 提供支持。
特点:难以置信的快速 - 生成静态文件一目了然

2013.6.20 更新:
gor -- 用 Go 编写的静态网站和博客生成器引擎
gor 有以下惊人的好处: 1。速度 -- 编译完所有我在 wendal.net 上的近 200 篇博客不到 1 秒 2. 简单 -- 编译后只生成一个可执行文件,没有其他依赖

【讨论】:

  • 我认为这只是问题的部分答案。当然,你所说的没有错,但你的回答没有解释如何编译完整的网站,而不编译已经编译的东西。我也很想知道这个!
  • @musicmatze 嗨,你可以尝试使用hexo,一个快速、简单、强大的博客框架,由Node.js 提供支持。难以置信的快速 - 生成静态文件一目了然。
  • @musicmatze try gor -- 用 Go 编写的静态网站和博客生成器引擎。github.com/wendal/gor
【解决方案2】:

安装 Ruby GSL

gem install gsl 

您应该注意到速度增加了。

【讨论】:

  • 你能解释一下为什么吗? jekyll 从 gsl 中使用了什么?
  • 我同意,你能解释一下吗?这个 gem 安装也失败了。
  • Jekyll 的“相关文章”使用了由 Classifier::LSI 提供的潜在语义索引。为此,它使用了矢量分析功能,可以通过 GSL(的 Ruby 包装器)GNU Scientific Library 来加速。如果 GSL 不可用,则使用纯 Ruby 实现,但对于大型网站来说速度非常慢,使用 GSL 可以提高大约 10 倍的性能。
  • 应该通知吗?你有理由这样做吗?我是否只使用jekyll build 之后没有额外的标志?
【解决方案3】:

由 Node.js 提供支持的 hexo。我正在使用它,比 Octopress 快得多。并且它提供了一种简单的方法,可以非常轻松地将您的文章迁移到 hexo。

【讨论】:

【解决方案4】:

您在撰写文章时只能生成一篇文章

rake isolate[your-post]

然后

rake integrate

恢复正常。

要全面回答您的问题,您不能只生成一篇帖子。您可以在该主题上看到 Octopress 的 Issue #395,这说明这是由于 Jekyll 方面的限制。

【讨论】:

    【解决方案5】:

    遇到了同样的问题,但后来不太喜欢 rake 隔离的想法。此外,内置任务不与 _drafts 工作流集成。 所以我最终使用的是创建一个自定义 config.yml,其中排除了 _posts 文件夹(使用排除),并且只构建了草稿文件夹。您可以将不同的配置文件作为命令行参数传递给 jekyll。我只是在积极撰写新帖子时使用它,而在发布时使用相同的旧方法(这仍然需要一些时间)。这种方法只构建草稿帖子,我很擅长。

    jekyll build --watch --drafts --config _previewconfig.yml
    

    对完整工作流感兴趣的人可以查看here

    【讨论】:

      【解决方案6】:

      如果您的博客有很多图像(以及其他在构建之间不会更改的静态资产),那么值得将它们从 Jekyll 的构建过程中排除,而是根据需要手动更新它们。

      无论出于何种原因,Jekyll build 在处理此类资产时并不聪明。它将删除public 文件夹中的所有内容,并在您每次构建时重新复制source 中的内容。如果资产没有改变,这是一种浪费。这可以通过使用能够更新已更改内容的工具(例如 Robocopy (Windows) 或 Rsync (Linux))来避免。

      要告诉 Jekyll 忽略文件夹,请将以下内容添加到 _config.yml

      exclude:     # exclude from build
        - folderPath
      keep-files:  # do not delete/empty copy in `public`
        - folderPath
      

      然后在其他地方,使用您想要更新文件夹的任何工具。


      更多您可以尝试的方法,请参阅this post

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 2011-12-15
        • 1970-01-01
        • 2013-07-20
        • 1970-01-01
        • 2017-02-11
        相关资源
        最近更新 更多