Flask 发送静态但有时更改的文件
我想用flask提供一些主要是静态的,但有时会更改的文件。现在它们位于静态目录中,可以在/static/filename上访问,有时flask应用程序会在静态目录中生成并写入文件的新版本,但问题是,除非我在浏览器中按“刷新”按钮,否则它们不会在浏览器中自动更新。您可以为静态资源创建版本查询字符串 以下是一个很好的例子: 然后在jinja模板中使用static_urljs/a.js而不是url_forstatic,filename=js/a.jsFlask 发送静态但有时更改的文件,flask,Flask,我想用flask提供一些主要是静态的,但有时会更改的文件。现在它们位于静态目录中,可以在/static/filename上访问,有时flask应用程序会在静态目录中生成并写入文件的新版本,但问题是,除非我在浏览器中按“刷新”按钮,否则它们不会在浏览器中自动更新。您可以为静态资源创建版本查询字符串 以下是一个很好的例子: 然后在jinja模板中使用static_urljs/a.js而不是url_forstatic,filename=js/a.js def register_jinja(app):
def register_jinja(app):
...
if not hasattr(app, '_static_hash'):
app._static_hash = {}
def static_url(filename):
if app.testing:
return filename
if filename in app._static_hash:
return app._static_hash[filename]
with open(os.path.join(app.static_folder, filename), 'r') as f:
content = f.read()
hsh = hashlib.md5(content).hexdigest()
app.logger.info('Generate %s md5sum: %s' % (filename, hsh))
prefix = app.config.get('SITE_STATIC_PREFIX', '/static/')
value = '%s%s?v=%s' % (prefix, filename, hsh[:5])
app._static_hash[filename] = value
return value
@app.context_processor
def register_context():
return dict(
static_url=static_url,
...
)