TL; DR: Kann ich irgendwie sagen, den Inhalt für ein {% include %}
einmal zu erzeugen und ihn einfach an mehreren Stellen auszustempeln, ohne ihn an jedem Ort neu generieren zu müssen?
Ich baue eine ziemlich große Dokumentationsseite mit Jekyll, die momentan etwas mehr als 50 Artikel hat. Es hat eine Sidebar, wo alle Artikel aufgelistet sind. Die Seitenleiste wird in einer separaten sidebar.html erstellt und dann in jede Seite der Site mit {% include sidebar.html %}
in default.html eingefügt.
Das Problem, das ich habe, ist, dass jeder einzelne Artikel die Generation von sidebar.html separat ausführt, also habe ich mehr als 50 Generierungsdurchläufe für diesen Code. Jeder Artikel, den ich hinzufüge, fügt einen weiteren Durchlauf hinzu und macht alle Durchgänge ein wenig langsamer, da die Erzeugung der Seitenleiste jeden einzelnen Artikel im Projekt analysieren muss.
Die Build-Zeit ist bereits von null auf über 100 Sekunden gestiegen, und wenn ich {% include sidebar.html %}
entferne, fällt sie auf 5 Sekunden. Wenn ich alle Artikel bekomme, würde ich schätzen, dass sie ungefähr 100-200 davon haben. Dann sollte ich in Zukunft für alle Artikel versionieren, was bedeutet, dass es auf lange Sicht leicht 1000+ Artikel geben kann. An diesem Punkt wäre ich nicht überrascht, wenn die Änderung eines einzelnen Buchstabens in einer Datei etwa eine Stunde dauern würde, um Dateien in jekyll serve
und jekyll build
zu regenerieren.
Was ich tun möchte, ist, sidebar.html einmal am Anfang des Build-Prozesses zu erstellen und es einfach auf jede Seite auszugeben, wenn ich diese Seiten erzeuge. Ist das möglich?
Es gibt jetzt einen besseren Weg, dies zu tun, dank Ben Balter.
anstelle von: {% include yartemplate.html%} Verwenden Sie: {% include_cached yartemplate.html%}
Bei größeren Objekten, die einmal erstellt werden müssen, z. B. einer Standorthierarchie, wird das Objekt zwischengespeichert. Bei anderen Elementen, die auf den verschiedenen Seiten variieren, möchten Sie das Include immer noch verwenden.
Es wird hier gut erklärt: Ссылка
Reduziert auf jeden Fall die Startzeit vor Ort!
Schnellster Weg, dies zu tun.
Verschiebe _includes/sidebar.html
auf sidebar-template.html
Fügen Sie diese Front ein:
%Vor% Erstellen Sie ein Rakefile
Führe einfach rake
aus und du hast dein Sidebar Include generiert.