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.
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)