Python Heroku上的Zombie SharedDataMiddleware

nat*_*ill 6 python heroku flask

我正在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') })
Run Code Online (Sandbox Code Playgroud)

我第一次部署应用程序时,将在herokuapp.com/static上提供./static中的相应文件.但在初始部署之后,Heroku上的文件永远不会改变.如果我将最后一行更改为:

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

一个新的静态文件URL,herokuapp.com/assets,然后我可以看到更新的文件.

它似乎是文件的镜像卡在系统中.我已经改变了四次,仍然可以访问所有的URL.

Sim*_*pin 4

SharedDataMiddleware 默认发送Cache-ControlHTTPExpires标头,这意味着您的 Web 浏览器甚至可能不会向服务器发送请求,而仅使用缓存中的旧文件。尝试禁用缓存

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

Flask 对静态文件做同样的事情。要在那里禁用它

app.config['SEND_FILE_MAX_AGE_DEFAULT'] = None
Run Code Online (Sandbox Code Playgroud)