6

HerokuでFlaskアプリをセットアップしています。静的ファイルを追加するまで、すべてが正常に機能しています。私はこれを使用しています:

from werkzeug import SharedDataMiddleware
app = Flask(__name__)
app.wsgi_app = SharedDataMiddleware(app.wsgi_app, {'/static': os.path.join(os.path.dirname(__file__), 'static') })

初めてアプリをデプロイすると、./static内の適切なファイルがherokuapp.com/staticで利用できるようになります。ただし、最初のデプロイ後、Herokuでファイルが変更されることはありません。最後の行を次のように変更した場合:

app.wsgi_app = SharedDataMiddleware(app.wsgi_app, {'/assets': os.path.join(os.path.dirname(__file__), 'static') })

静的ファイルの新しいURLであるherokuapp.com/assetsを使用すると、更新されたファイルを確認できます。

ファイルのミラーがシステムに詰まっているようです。私はそれを4回変更しましたが、それでもすべてのURLにアクセスできます。

4

1 に答える 1

4

SharedDataMiddlewareは、デフォルトで送信ヘッダーCache-ControlExpiresHTTPヘッダーに設定されています。つまり、Webブラウザーはサーバーに要求を送信せず、キャッシュから古いファイルを使用するだけです。キャッシュを無効にしてみてください:

app.wsgi_app = SharedDataMiddleware(
    app.wsgi_app,
    {'/static': os.path.join(os.path.dirname(__file__), 'static')},
    cache=False)

Flaskは静的ファイルでも同じことをします。そこで無効にするには:

app.config['SEND_FILE_MAX_AGE_DEFAULT'] = None
于 2012-08-03T07:34:23.507 に答える