尽快通过path/name获取集合页面变量

Get collection page variable by path/name as fast as possible

假设我有一个名为 CardMaster 的 Jekyll 数据(对象数组)和一个名为 charas.

的 Jekyll 集合

我有一个页面需要为 CardMaster 的每个 cardInfo 循环。对于每个 cardInfocharas 集合中有一个独特的页面,其中包含我需要的更多信息。

这是我目前可以运行的代码,但是速度很慢(O(N^2),N大约是几百)。

{% assign cardInfos = site.data.CardMaster | where: "stockOrder", 1 %}
<ul>
<!-- this will loop N times -->
{% for c in cardInfos %}
<li>
  <!-- print some info from `c` -->

  {% capture page_cond %}item.name == "{{ c.resourceName }}.md"{% endcapture %}
  <!-- this will take O(N) time -->
  {% assign page = site.charas | where_exp: "item", page_cond | first %}

  <!-- print some info from `page` -->
{% endfor %}
</ul>

我想做的是使 {% assign page = site.charas | where_exp: "item", page_cond | first %} 更快,就像是否可以 {% assign page = site.charas_page_map["{{c.resourceName}}.md"] %} 将时间复杂度从 O(N) 降低到 O(常数)。

将 Jekyll 数据 CardMaster 合并到 Jekyll 集合 charas 或相反是不可行的,因为 CardMaster 是机器定期从外部源生成的,而 charas 是由人工维护的.

该网站托管在 Github 个页面上,因此禁止使用大多数 Jekyll 插件。

最后我只是用自定义的 Jekyll 插件来实现这个,因为可以在 Github Actions 中构建你的站点(使用你想要的任何版本的 Jekyll)并发布到 Github Pages (而且构建时间也更快,所以这是一个加号)