Tornado将查询字符串添加到静态文件路径
当Tornado加载一个模板时,静态文件的路径会变成这样:
http://localhost:8888/static/js/jquery-ui.min.js?v=02e1058fd3cb0799867ba932a4ad3b22
我使用这种方式来声明静态文件:
settings = {
'static_path': os.path.join(os.getcwd(), 'static'),
}
application = tornado.web.Application([
(r'/', MainHandler),
(r'/login/', LoginHandler),
(r'/websocket', EchoWebSocket),
(r'/static/', tornado.web.StaticFileHandler, dict(path=settings['static_path'])),
], static_hash_cache=False, debug=True, cookie_secret='salt', **settings)
我该怎么去掉路径中的'v'变量呢?
1 个回答
2
这里的 v
是一个静态文件的哈希值,它是根据文件内容生成的。
当你使用
static_url()
函数时,它会把相对路径转换成一个类似于 /static/images/logo.png?v=aae54 的URI。这个 v 参数就是 logo.png 文件内容的哈希值,它的存在会让 Tornado 服务器向用户的浏览器发送缓存头,这样浏览器就会无限期地缓存这个内容。因为 v 参数是基于文件内容生成的,如果你更新了文件并重启服务器,服务器就会开始发送一个新的 v 值,这样用户的浏览器就会自动获取到新文件。如果文件内容没有变化,浏览器会继续使用本地缓存的副本,而不会去检查服务器上是否有更新,这样可以显著提高页面的加载速度。
这个 v
是用来在客户端浏览器中缓存文件的。你可以把它想象成文件名的一部分。
如果你不想要这种缓存效果,正如 Tornado 所说的,你可以使用 nginx
服务器。
http://www.tornadoweb.org/en/branch2.3/overview.html#static-files-and-aggressive-file-caching