2019年3月6日水曜日

静的サイトジェネレータ Pelican のキャッシュを設定してみた

キャッシュを有効にする

静的サイトジェネレータに 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_postspelican-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 件のコメント:

コメントを投稿

麻のボディタオル

2018年の秋(まだ、自転車を封印してない)、 近江上布伝統産業会館 で、興味からボディタオルを購入した。 お、よかった。: 自然派パン工房 ふるさとの道 ほぼ毎日風呂で使ってきて、ついに寿命がきたようだ。 お店の方に、「糸が痩せて破れてくる」まで使える、と...