3

現在、django-pipeline を使用して PyReact JSX コンパイラをインストールしています。

以前のバージョンの react .jsx およびコンパイル済み .js ファイルを上書きするのではなく、自分のファイルに対して collectstatic を実行すると、同じフォルダーに新しいバージョンが作成されます。これを停止して、プログラムに以前のバージョンを単純に上書きさせる方法はありますか? または、django-pipeline を使用して 1 回だけ使用するためのベスト プラクティスはありますか?

私のsettings.py:

PIPELINE_COMPILERS = (
  'react.utils.pipeline.JSXCompiler',
  'pipeline.compilers.less.LessCompiler',
)

PIPELINE_JS = {
    'bootstrap': {
        'source_filenames': (
          'twitter_bootstrap/js/transition.js',
          'twitter_bootstrap/js/modal.js',
          'twitter_bootstrap/js/dropdown.js',
          'twitter_bootstrap/js/scrollspy.js',
          'twitter_bootstrap/js/tab.js',
          'twitter_bootstrap/js/tooltip.js',
          'twitter_bootstrap/js/popover.js',
          'twitter_bootstrap/js/alert.js',
          'twitter_bootstrap/js/button.js',
          'twitter_bootstrap/js/collapse.js',
          'twitter_bootstrap/js/carousel.js',
          'twitter_bootstrap/js/affix.js',
        ),
        'output_filename': 'js/b.js',
    },
    'clubs': {
        'source_filenames': (
          'js/clubs.jsx',
        ),
        'output_filename': 'js/clubs.js',
    },
    'react': {
        'source_filenames': (
            'react/js/react.min.js',),
        'output_filename': 'js/r.js',
    },
    'jquery': {
        'source_filenames': (
            'js/jquery.js',
        ),
        'output_filename': 'js/jq.js',
    },
}

STATIC_ROOT = BASE_DIR + '/static/'

STATIC_URL = '/static/'

STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage'
4

1 に答える 1

5

私があなたの質問を正しく理解していれば、あなたの懸念は、 を実行した後、ディレクトリに、のcollectstaticようなファイルがあることです。foo.2d32ed.jsfoo.4bhf45.jsfoo.09d9fg.jsSTATIC_ROOT

もしそうなら、これは PyReact や django-pipeline の問題ではありません。これは、キャッシュされたストレージ バックエンド (つまり、STATICFILES_STORAGE設定) を使用しているために発生しています。ファイル名に追加される文字列は、ファイルの内容のハッシュであり、静的ファイルのバージョン管理のように効果的に機能します。

この理由は、ブラウザでのキャッシュ無効化です。ファイルのコンテンツの関数としてファイル名を使用すると、ブラウザはファイルを永久にキャッシュできます。これにより、ユーザーが次にアクセスしたときのページの読み込み時間が短縮されます。

この動作を無効にしたい場合は、PipelineStorage代わりに非キャッシュ ストレージ バックエンドを使用できます。

役立つドキュメントを次に示します。

于 2014-10-22T02:44:01.393 に答える