我正在寻找一些关于Hugo 可能如何管理网站范围数据的一小撮示例,例如Site.AllPages
。
具体来说,在开始生成页面并制作{{1}之类的内容之前,Hugo似乎太快无法读入每个文件及其元数据。可用 - 但显然必须如此。
Ruby(Jekyll)和Python(Pelican)真的那么慢,还是有一些特定的(算法)方法让Hugo在一切准备就绪之前用来生成页面?
答案 0 :(得分:4)
没有任何魔法,在.Site.Pages
等集合被填充并准备就绪之前,Hugo不会开始任何渲染。
这里有一些关键点:
Go
构建的 - 这非常快,并且有一套非常好的工具(pprof
,基准支持等)。使hugo server
变体比常规hugo
构建更快的其他一些要点:
我会拜访Hugo的主要开发者GitHub。
答案 1 :(得分:1)
您可以看到AllPages
in hugolib/page_collections.go
。
git blame
表示已在Sept. 2016 for Hugo v0.18 in commit 698b994中对其进行了修改,以便修复PR 2297 Fix Node vs Page。
该PR引用了discussion/improvement proposal "Node improvements"
大多数"问题"一旦我们同意页面只是一个页面只是一个页面...
,这将变得更加容易节点只是一个带有鉴别器的页面。
所以:
- 今天的页面是带有鉴别器的页面" page"
- 主页是带歧视者的页面" home"或者其他什么
- 分类法是带有鉴别器和分类法的页面"
- ...
它们有一些结构差异(分页等),但它们基本上只是页面。
考虑到这一点,我们可以将它们全部放在一个集合中,并在鉴别器上添加查询过滤器:
.Site.Pages
:由discriminator =' page'过滤*.Site.All
:无过滤器where
:当序列为Pages时,添加discriminator =' page',但让用户覆盖
该密钥(鉴别器)允许快速检索所有页面'。