Django の collectstatic の目的は何ですか? 質問する

Django の collectstatic の目的は何ですか? 質問する

Djangoでは、アプリ固有の静的ファイル(css、jsなど)をすべて、次のフォルダに配置するのが慣例です。静的したがって、構造は次のようになります。

mysite/
    manage.py
    mysite/ --> (settings.py, etc)
    myapp/ --> (models.py, views.py, etc)
        static/

私はmysite/settings.py持っています:

STATIC_ROOT = 'staticfiles'

それで、次のコマンドを実行します:

python manage.py collectstatic   

staticfilesルートレベル(つまり と同じディレクトリmyapp/)にというフォルダを作成します。

これの目的は何ですか? すべての静的ファイルのコピーを作成するだけではないのですか?

ベストアンサー1

複数のアプリから静的ファイルを単一のパスに収集する

まあ、1つのDjangoプロジェクト複数使用する場合があるアプリ、つまり は 1 つしかありませんが、実際には、、 などmyappである可能性があります。myapp1myapp2

個々のアプリ内から 1 つのフォルダーにコピーすることでSTATIC_ROOT、複数のパスから静的ファイルを提供するように Web サーバーを構成するのではなく、フロントエンド Web サーバー (例: nginx) をその 1 つのフォルダーにポイントし、単一の場所から静的ファイルを提供することができます。

永続的なURLマニフェスト静的ファイルストレージ

バージョン管理のためにファイル名に追加される MD5 ハッシュに関する注意: これは のデフォルトの動作の一部ではありませんcollectstatic。 はsettings.STATICFILES_STORAGEデフォルトで になっていますStaticFilesStorage(これは実行されません)。

たとえば、 を使用するように設定すると、MD5 ハッシュが有効になりManifestStaticFilesStorage、その動作が追加されます。

このストレージの目的は、一部のページがまだ古いファイルを参照している場合(たとえば、ユーザーまたはサードパーティのプロキシ サーバーによってキャッシュされている場合)に、古いファイルを提供し続けることです。さらに、デプロイされたファイルに遠い将来の Expires ヘッダーを適用して、後続のページ アクセスの読み込み時間を短縮する場合にも非常に役立ちます。

おすすめ記事