Django の collectstatic コマンドは、静的ファイルを収集してストレージバックエンドにアップロードする際に使用されるが、プロジェクトの規模が大きくなると処理時間が非常に長くなることがある。Collectfast はこのプロセスを最適化し、大幅な高速化を実現するためのツールである。
主な機能
- 差分ベースのアップロード:ファイルのハッシュ値をキャッシュし、変更されたファイルのみをアップロードする。
- 並列アップロード対応:複数のスレッドで同時にファイルをアップロード可能。
- 複数のストレージバックエンドをサポート:AWS S3(
S3Boto3Storage)、Google Cloud Storage、ローカルファイルシステムなどに対応。
導入手順
まず、pip でパッケージをインストールする:
python3 -m pip install Collectfast
Django の設定ファイル settings.py に以下の設定を追加する:
# スタティックファイルのストレージバックエンドを指定
STATICFILES_STORAGE = "storages.backends.s3boto3.S3Boto3Storage"
# Collectfast 用のストラテジーを設定
COLLECTFAST_STRATEGY = "collectfast.strategies.boto3.Boto3Strategy"
# collectfast を INSTALLED_APPS の先頭に追加
INSTALLED_APPS = [
"collectfast", # django.contrib.staticfiles より前に配置
"django.contrib.staticfiles",
# 他のアプリ...
]
設定後、通常通り collectstatic コマンドを実行するだけで、高速化が有効になる:
python manage.py collectstatic
活用例と設定のベストプラクティス
大規模プロジェクトでの利用
jQuery UI や多数の CSS/JS ファイルを含むプロジェクトでは、従来の collectstatic が数分かかることもあるが、Collectfast を導入することで数秒に短縮できるケースが多い。
並列処理の有効化
アップロードスレッド数を増やすことで、ネットワーク帯域をより効率的に活用できる:
COLLECTFAST_THREADS = 20
推奨設定
- 専用のキャッシュバックエンド(例:Redis)を
COLLECTFAST_CACHEとして指定し、ハッシュ照合のパフォーマンスを向上させる。 - 開発中はデバッグモードを有効にして詳細ログを取得可能:
COLLECTFAST_DEBUG = True
連携が有用な関連プロジェクト
Django Storages
Amazon S3 や Google Cloud Storage などの外部ストレージと Django を連携させるライブラリ。Collectfast はこのライブラリと組み合わせて動作するため、事前に適切なストレージ設定が必要となる。
Django Debug Toolbar
開発時のパフォーマンス分析に役立つデバッグツール。静的ファイルの処理時間やキャッシュヒット状況を可視化することで、Collectfast の効果を定量的に確認できる。