キャッシュを有効にする
静的サイトジェネレータに Pelican (4.0.1)を使っている。 org-modeでメモがある程度まとまると、 ブログの記事みたいにして、QNAPのwebサーバーへ放り込み、org側はArchivingするという具合。
テーマは、最初のころ pelican-bootstrap3 を使っていたが、 記事が増えてmakeで待たされるので、 軽くてシンプルなテーマだと思って foundation-default-colours を使っていた。
それでも30秒を優に越えるようになってきた。 まあ、家さばにアウトプットさせてるのが主な原因(ローカルだと30%ぐらい)。
Done: Processed 124 articles, 0 drafts, 0 pages, 0 hidden pages and 0 draft pages in 35.08 seconds.
そこで、高速化する方法について調べると、 cacheを設定する方法が公式の ドキュメント にあるのをみつけた。 具体的には、 pelicanconf.py の共通部分に以下を追加した。
CACHE_CONTENT = True LOAD_CONTENT_CACHE = True CHECK_MODIFIED_METHOD = 'mtime' CONTENT_CACHING_LAYER = 'generator'
結果、25%ほど速くなった。
Done: Processed 124 articles, 0 drafts, 0 pages, 0 hidden pages and 0 draft pages in 25.66 seconds.
けど。。。。 この程度では満足できない。システムのキャッシュが有効なのかもしれないし。 試しに pelican-bootstrap3 にテーマを戻してみると、 なんと半分ほどの時間で済んだ。
;; キャッシュ無効で、makeすると、 Done: Processed 124 articles, 0 drafts, 0 pages, 0 hidden pages and 0 draft pages in 18.18 seconds. ;; キャッシュ有効で、新しい記事を追加すると、 Done: Processed 127 articles, 0 drafts, 0 pages, 0 hidden pages and 0 draft pages in 14.56 seconds. ;; キャッシュ有効で、pluginを変更すると、 Done: Processed 128 articles, 0 drafts, 0 pages, 0 hidden pages and 0 draft pages in 35.62 seconds.
速度を評価するための環境をつくった訳ではないが、 まあ、キャッシュを有効にすることで、 25%ぐらいは短縮が期待できそうなので、ヘマしたことの追求はやめた。 コピペの落とし穴か。
pluginを追加すると台無し
ところで、makeが早くなったので、pluginを増やしてしまった。 加えたのは、 related_posts と pelican-toc 。 但し、bootstrap3の場合。
これは、 pelicanをbootstrap3のテーマで使っている サイト を見付けたから。
設定の説明とかあるがドイツ語。 なんとなく設定方法がわかるかも、という感じ。 bootswatchを新しいものに交換しているようだが、 理解できないので、その部分はさわってない。
related_posts の設定
- pelicaconf.pyの PLUGINSに 'related_posts' を追加。他の設定は無し。
- 'hogehoge/themes/pelican-bootstrap3/templates/includes/related-posts.html' の変更は止めた。
pelican-toc の設定
pelicaconf.pyの PLUGINSに 'pelican-toc'を追加して、 以下を追加(READMEのまま)。
TOC = { 'TOC_HEADERS' : '^h[1-6]', 'TOC_RUN' : 'true', 'TOC_INCLUDE_TITLE' : 'true', }
'hogehoge/themes/pelican-bootstrap3/templates/includes/toc.html' を新規作成。
{% if article.toc %} <div class="entry-content"> <h3> Table of content: </h3> <ul> {{article.toc}} </ul> </div> {% endif %}
'hogehoge/themes/pelican-bootstrap3/templates/article.html' に一行追加。
<div class="entry-content"> <div class="panel"> <div class="panel-body"> {% include "includes/article_info.html" %} </div> </div> {% include 'includes/toc.html' %} <!-- この一行 --> {{ article.content }} </div>
結果は当然だが、また時間がかかるようになった。
;; キャッシュ有効 Done: Processed 128 articles, 0 drafts, 0 pages, 0 hidden pages and 0 draft pages in 25.64 seconds.
related-postsはデフォではちょっと、という感じ。
記事毎に 'related_posts: slug1, slug2, slug3, ... slugN' を書き込みするのは面倒だし。
tagで良いように思う。
tocは欲しいかも。
pulugin2個追加で、時間が同等。 plugin追加は、やっぱりキャンセルか。悩ましい。
0 件のコメント:
コメントを投稿