qrac / minista

Static site generator with 100% static export from React and Vite.
https://minista.qranoko.jp
165 stars 13 forks source link

Image、Pictureコンポーネント使用時のビルドを、一部キャッシュ化して高速化させたい #122

Open FuCrowRabbit opened 2 months ago

FuCrowRabbit commented 2 months ago

Image、Pictureコンポーネントは非常に便利ですが、 ビルド時に毎回画像変換を行う都合上、使えば使うほどビルド時間がネックになってきています。

そこで一度画像を変換した事があるものについては、キャッシュのような機能を設けて画像変換をスキップさせたいです。

具体的には、以下の通りです。

  1. 画像変換(ビルド)後に何らかの方法で、(変換)元画像のパスとハッシュ値のデータを保存するようにする。
  2. ビルド時に保存されたデータを読み取り、以下の条件全てがtrueだった場合、その画像の変換をスキップする。
    • 変換したい画像パスと、保存されたデータに全く同じ元画像のパスが存在している
    • さらに、元画像に変更が加わっているかハッシュ値で照合する
    • 出力先に画像が存在している(ファイル名で確認)

非常に便利なツールなので、もっと盛り上げたいと思いました。 よろしくお願いいたします。

FuCrowRabbit commented 2 months ago

適当に作って実験してみました。 __minista_cache/cache.jsonを生成して、画像とオプションをハッシュ値として保存するようにしました。

https://github.com/FuCrowRabbit/minista-issue122/commit/390e4136a9aa4326650d3a89d4a53858937b3e35

===結果=== 画像1,254枚を含めたnpm run build

変更前:4分32秒 変更後:4分30秒(初回)、9秒(2回目以降)

qrac commented 2 months ago

@FuCrowRabbit ご協力ありがとうございます!!キャッシュを作る案は良いですね!

ちなみに、急いで導入した方が良いですか? 今すぐでなくてもよければ、現在開発中のv4に反映します。

FuCrowRabbit commented 2 months ago

@qrac ご確認のほど、ありがとうございます!

こちらの事情的には、早く欲しいところではありますが、 個人的な事情をOSSに反映するのは良くないと思いますし、 フォークして修正したコードがそのまま真マージされるわけでは無く、諸々修正・調整が入ると思いますので、 v4のリリース時で、問題ございません。

こちらはnpmの向き先を、v4リリースまでフォークした物に一時的に変えるなどで対応いたします。

ちなみに、v4のリリース時期は大まかに決まっていたりしますでしょうか?

qrac commented 2 months ago

@FuCrowRabbit ありがとうございます。v4はお盆休みあたりに完成させられたらなと考えています!

qrac commented 1 month ago

@FuCrowRabbit こちらをv4のデフォルト機能として実装しました!