LightFile NextLightFile Next

インデックスファイル

処理対象ファイルをファイルで明示的に指定

LightFile Batchは、通常のディレクトリスキャンの代わりに、処理対象ファイルをインデックスファイルで明示的に指定することができます。

CMSやWebアプリケーションで変更・追加されたファイルが把握できる場合、ディレクトリ全体をスキャンせず、それらのファイルだけを効率的に最適化できます。インデックスファイルは、外部システムとの連携インターフェースとして機能します。

インデックスファイルとは

インデックスファイルは、処理対象ファイルのリストをTSV(タブ区切り)形式で記録したファイルです。

主な用途:

外部システムとの連携

CMSやWebアプリケーション、データベースから、変更・追加されたファイルのリストを出力し、インデックスファイルとして提供することで、ディレクトリスキャンなしで効率的な最適化を実現します。

:

  • WordPressなどのCMSでアップロードされた画像を自動的に最適化
  • ECサイトで新規登録された商品画像のみを処理
  • DAM(Digital Asset Management)システムから変更履歴を取得して処理

大規模環境での高速化

S3バケットなど、数十万〜数百万ファイルがある環境でディレクトリスキャンを省略し、処理時間を大幅に短縮できます。

インデックスファイルのフォーマット

TSV(タブ区切り)形式で、以下のフィールドを指定します。

基本フォーマット

<相対パス>[	<ファイルサイズ>[	<更新日時(Unixタイムスタンプ)>]]

完全な情報を含む例:

images/photo1.jpg	1024000	1697788800
images/photo2.png	2048000	1697875200
uploads/banner.jpg	512000	1697961600

相対パスのみ(サイズ・日時省略)の例:

images/photo1.jpg
images/photo2.png
uploads/banner.jpg

フィールド

フィールド必須説明省略時の動作
相対パスファイルの相対パス-
ファイルサイズバイト単位サイズフィルタの対象外
更新日時Unixタイムスタンプ(秒)時間フィルタの対象外

注意事項:

  • フィールドはタブ文字(\t)で区切る
  • ヘッダー行は不要
  • 空行は無視される
  • 相対パスはスラッシュ(/)区切り(Windows環境でも)
  • ファイルサイズと更新日時は省略可能(省略時の動作については「フィルタとの併用」を参照)

使い方

インデックスファイルは、ローカルインデックスファイルリモートインデックスファイルの2種類があります。

  • ローカルインデックスファイル: LightFile Batchを実行しているマシン上に配置されたインデックスファイル
  • リモートインデックスファイル: LightFile Batchが接続しているリモートファイルシステム上に配置されたインデックスファイル

ローカルインデックスファイル

LightFile Batchを実行するマシン上のパスで指定します。

lightfile-batch local /path/to/images --index-file /path/to/index.tsv
index:
  file: /path/to/index.tsv

local:
  dir: /path/to/images

リモートインデックスファイル

リモートファイルシステム上の相対パスで指定します。

S3の場合:

lightfile-batch s3 \
  --s3-bucket my-bucket \
  --s3-acl private \
  --index-remote-file index.tsv
index:
  remoteFile: index.tsv

s3:
  bucket: my-bucket
  region: ap-northeast-1
  acl: private

SFTP/FTPの場合:

lightfile-batch sftp \
  --sftp-host sftp.example.com \
  --sftp-user myuser \
  --index-remote-file index.tsv \
  --sftp-dir /images

フィルタとの併用

インデックスファイルとフィルタは併用できます。インデックスファイルで指定されたファイルに対して、設定したフィルタが適用されます。

適用されるフィルタ

以下のフィルタがインデックスファイルの内容に適用されます:

  • 拡張子フィルタ: --ext(例: --ext .jpg,.png
  • パターンフィルタ: --include / --exclude(globパターン)
  • サイズフィルタ: --min-size / --max-size
  • 日時フィルタ: --after / --before

ファイルサイズ・更新日時を省略した場合

インデックスファイルでファイルサイズや更新日時を省略すると、それらに関するフィルタの対象外となり、すべて軽量化の対象になります。

省略したフィールド対象外となるフィルタ結果
ファイルサイズ--min-size--max-sizeサイズに関わらず処理対象になる
更新日時--after--before日時に関わらず処理対象になる

:

# サイズフィルタを設定
lightfile-batch local /path/to/images \
  --index-file /path/to/index.tsv \
  --min-size 100kb
# インデックスファイル(ファイルサイズを省略)
images/photo1.jpg
images/photo2.png

この場合、インデックスファイル内のすべてのファイルが処理対象になります。--min-size 100kb は無視されます(ファイルサイズが省略されているため)。

関連ページ