実現したいこと
【Hugo】-Mオプションでディスクへ書かずにビルドする
で触れたとおり、-M(--renderToMemory)を付けるとpublic/への書き込みがなくなる一方、メモリ使用量が大きく増える。画像などの静的ファイルを大量に持つサイトでは、この増加を無視できない場合がある。
--renderStaticToDiskを付けると、静的ファイルだけをディスクから配信し、コンテンツから生成する動的なページはメモリ上でレンダリングする。ディスクへの書き込みを避けたい範囲を動的ページだけに絞り込める。
使い方
-Mと--renderStaticToDiskをあわせてhugo serverに付ける。
$ hugo server -M --renderStaticToDisk
起動ログに配信方法が表示される。
Serving pages from memory and static files from disk
static/配下に置いたファイルはpublic/へ書き出されるが、コンテンツから生成されるHTMLは書き出されない。
$ find public -type f
public/hello.txt
static/hello.txtを編集するとpublic/hello.txtもリアルタイムに更新される。一方でコンテンツのページはブラウザからは正しく閲覧できるが、public/には該当するHTMLファイルが一切現れない。
-Mを付けないと効果がない
Hugo v0.123.0以降、hugo serverは既定ですべてのファイルをディスクへ書き出す。--renderStaticToDiskは「静的ファイルはディスクのまま、動的ページだけをメモリへ逃がす」ためのオプションであるため、-Mを付けずに単独で指定しても既定の動作と変わらない。
$ hugo server --renderStaticToDisk
Serving pages from disk and static files from disk
-Mなしの既定のhugo serverと同じく、すべてのファイルがpublic/へ書き出される。
hugoコマンドには存在しない
--renderStaticToDiskはhugo server専用のフラグで、ビルドのみを行うhugoコマンドの--helpには表示されない。ビルド結果を一度だけ生成する用途では意味を持たないオプションのため、開発サーバー限定のオプションとして提供されている。
静的ファイルが多いサイトでの使いどころ
-Mはページだけでなく画像などの静的ファイルもすべてメモリへ展開するため、静的ファイルの容量が大きいサイトほどメモリ使用量が増える。--renderStaticToDiskを併用すると、容量の大きい静的ファイルはディスクから配信されるようになり、メモリに乗るのはページの生成結果だけに絞られる。メモリ使用量を抑えつつ、コンテンツ編集時の高速なレンダリングは維持したい場合に向いている。
