要約

  • 標準の料金方式ではMISSとSTALEで変換とキャッシュ書き込みが発生する。HITでも共有グローバルキャッシュからの取得は読み取りの対象になり得るが、同じ地域で最近使われた地域キャッシュには、この読み取り費用がかからない。
  • 幅、品質、形式の選択肢が画像の派生版を増やす。長いキャッシュ期間には更新手順が必要で、最適化の一括停止はデータ転送を増やす場合がある。

キャッシュに命中した。技術担当者にはうれしい知らせだ。経理担当者まで「これで画像は無料だ」と喜ぶには、まだ早い。Vercelの画像最適化では、すでに出来上がった画像を再利用する経路にも、個別に数える仕事が残っている。

サービスが省くのは、まず同じ画像をもう一度変換する手間である。標準料金は変換、キャッシュへの書き込み、キャッシュからの読み取りを区別する。利用者への配信にはFast Data TransferとCDN Requestsも加わる。一つの処理が終わっても、配送係まで帰ったわけではない。

同じHITでも、取り出す場所が違う

公式の料金説明によると、共有グローバルキャッシュから画像を取り出す使用量は8KB単位の読み取りで測る。ただし、すべてのHITにこの読み取り費用が発生するわけではない。同じ地域で数時間前など最近アクセスされた画像は地域内にキャッシュされ、その取得にはこの費用がかからない。

完成した画像を再利用できた、という結果だけでは経路が分からない。近くにあるコピーなのか、共有の保存先から取得したのかで読み取りの扱いが違う。ヒット率が高いからといって、グローバルキャッシュの読み取り量をそこから計算することはできない。配信そのものの使用量も別に残る。

MISSでは元画像を取得し、変換して保存し、利用者に渡す。STALEでは保存済みの画像を先に渡し、裏で再検証する。文書は両方について変換と書き込みを計上するとしており、書き込みも8KB単位だ。画面にはいつもの画像が出ていても、新しい作業は発生し得る。表示の安定と費用の停止を一緒にしないことが肝心だ。

写真の一枚と、システムの一種類

写真の在庫を数えるだけでは、このサービスの予算は組めない。動作の説明では、要求する幅と品質、プロジェクト、正規化したAcceptヘッダーなどを使ってキャッシュを区別している。ローカル画像では内容のハッシュ、リモート画像では絶対URLがキーに入る。同じ被写体でも、要求次第で複数の出力になる。

小さな画面に大きすぎるファイルを送らずに済むのは、最適化の効用である。その効用を残しながら、どの幅や品質まで必要なのかを決める。選択肢を追加した瞬間に全組み合わせが生成されるわけではなく、実際の要求が作業を起こす。考えるべきなのは、許可した種類と、使われている種類の関係だ。

写真を一枚も増やさずに、画面部品の改修で要求する幅を増やすこともあり得る。編集部の在庫表は変わらなくても、画像サービスへの注文は変わる。費用を決める会議は、請求担当者が出席する会議だけではない。

Vercelの使用量管理ガイドは、許可する形式、品質、画像サイズ、元画像のパターンを見直す方法を挙げている。派生版の種類を絞ることと、一つのファイルを軽くすることは、効く場所が違う。前者は生成し得る種類を限定し、後者は読み書きや転送のデータを減らせる。品質を下げるときは、利用者が受け取る画像も見る。商品を見分ける情報まで消した削減は、販売部門にとって気の利いた仕事とは言いにくい。

長く使うなら、差し替えも設計する

あまり変わらない画像は、キャッシュ期間を長くして再変換と書き込みを減らせる。同じ設定は、古い写真を直す日にも働く。節約の設定だけ決めて更新手順を決めないと、社内では修正済み、客先では以前のまま、という食い違いを残す。

リモートの元画像を同じURLのまま置き換えても、保存された変換画像はすぐに新しくならない。期限切れか無効化まで残る。TTLは元画像のmax-ageとminimumCacheTTLの大きい方で決まる。アプリの再デプロイだけでは画像キャッシュは無効にならない。ローカル画像なら内容を変えてから再デプロイすることで内容ハッシュを変えられ、明示的にキャッシュを削除する仕組みも用意されている。

ここで、画像の有効期間を地域キャッシュへの滞在期間と混同すると、別の勘違いが生まれる。長いTTLを設定しても、その間ずっと近くにコピーが残り、グローバル読み取りがなくなるという保証にはならない。変換画像の期限と、同じ地域で最近利用したコピーの条件は別々の規則だ。

担当者が確認すべき最終地点は、修正ファイルのアップロード画面ではなく、利用者が見る画像である。誰が差し替え、どの方法で反映させ、どう確かめるか。商品情報を直す約束には、この作業まで含まれる。

最適化をやめても、データは運ぶ

小さな画像やベクターなど、最適化の利点が小さいものは処理を通さずに配信できる。その画像の変換と画像キャッシュの読み書きは避けられる。一方、管理ガイドは全画像を一律に対象外にするとFast Data Transferが増える可能性を指摘している。大きな元ファイルを直接送るなら、費用が隣の項目に引っ越すこともある。

予算を比較する前に、契約の計数方法も確認したい。従来料金の説明では、2025年2月18日より前に作られた一定のEnterpriseチームについて、契約満了まで要求された一意の元画像数による方式を維持するか、標準方式へ移るかを選べるとしている。現在の全チームが元画像数方式を選択できるわけではない。

特定企業の節約額には、契約、派生版のサイズ、地域ごとの利用、実際の計測値が必要だ。文書だけでも、買い方を正すには十分である。画像を加工する仕事、再利用するファイルを取り出す仕事、利用者へ運ぶ仕事を分けて見る。キャッシュは優秀な節約係だが、請求書全体を担当してはいない。