2012-07-06 72 views
16

開発中に私のJSファイルに合理的なキャッシュ有効期限を設定しようとしています。私はHTML、CSS、JSがstaticディレクトリの下にある標準的な設定をしています。Flask静的ファイルCache-Control

docsはこれについて言及していますが、私の人生ではこれを動作させることはできません。私が最初に暗黙の両方の方法、

class MyFlask(flask.Flask): 
    def get_send_file_max_age(self, name): 
     if name.lower().endswith('.js'): 
      return 60 
     return flask.Flask.get_send_file_max_age(self, name) 

app = MyFlask(__name__) 

との両方が影響を及ぼさなかった

app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 60 

を試してみた、下の私のJSファイル/静的まだ、バックデフォルトのキャッシュのタイムアウトで来ている

Cache-Control: public, max-age=43200 

何かありがとうございました。

+4

1.フラスコのdevサーバーまたはnginxのようなhttpプロキシを使用していますか? 2. ''フラスコを返す.Flask.get_send_file_max_age(self、name) ''の代わりに '' return super(MyFlask、self).get_send_file_max_age(name) ''を使うべきです。 – Jarus

+0

上記のクラスはdefaltフラスコ開発サーバーを使用して私のために働いています。 –

+0

これらのパフォーマンスの理由から、私は(そして他の多くの人が聞いたことから)私の静的ファイルを、私が使っているWebサーバー(nginx/apache)によって直接提供できるようにしました。 –

答えて

0

webassetsを参照すると、キャッシュの有効期限を管理できます。開発環境と運用環境の両方で動作します。

2

私はこの問題を抱えていて、私のために働くオンラインの回答を見つけることができませんでした。

次に、静的ファイルがFlaskから提供されていないことに気付きました。 Flaskは自分のHTMLを生成するだけです。静的ファイルは私のウェブサーバ(私の場合はApache、あなたのものはNginxなのかもしれません)によって直接提供されます。

ここにApacheの手順を示します。

まずmod_expiresをモジュールをインストールします。

sudo a2enmod expires

次に、あなたの.htaccessファイルに次のようなものを追加します。Apache manualでそれを設定する方法の

ExpiresByType text/css "access plus 1 year" 
ExpiresByType application/javascript "access plus 1 year" 
ExpiresByType image/* "access plus 1 year" 

詳細。

関連する問題