インデックスファイル
処理対象ファイルをファイルで明示的に指定
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.tsvindex:
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.tsvindex:
remoteFile: index.tsv
s3:
bucket: my-bucket
region: ap-northeast-1
acl: privateSFTP/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 は無視されます(ファイルサイズが省略されているため)。
関連ページ
- YAML設定ファイル - インデックスファイル設定の詳細
- リモートファイルシステム概要 - リモートでの使用方法
- トラブルシューティング - 処理の問題 - インデックスファイルのトラブルシューティング