我有一个tornado.web.StaticFileHandler
类,用于提供一些静态内容。我注意到图像正在缓存在浏览器上,导致图像更改被忽视。我已经看到了向图像添加test.jpg?<file modifier>
标志的解决方案,以告知浏览器何时更新图像。不幸的是,我正在处理大量图像,添加此标志将是昂贵的。我知道还有另一种方法可以更改HTTP请求中的标头,指示浏览器应该为其缓存内容多长时间。有没有人知道如何使用静态文件处理程序在Tornado中执行此操作。
此静态文件处理程序还提供其他内容,如.css和.js文件。有没有办法只为某些内容更改缓存,或者我需要设置另一个静态文件处理程序并以不同方式设置它?
**另外值得注意的是,图像正在被另一个Tornado进程更改,我怀疑为什么更改没有被提供内容的进程选中....
答案 0 :(得分:2)
编写一个StaticFileHandler的子类,它覆盖get_cache_time以返回0.这将阻止Tornado的默认行为,即为file.jpg?v=random-id
访问的静态文件返回10年的缓存时间。
忽略get_cache_time参数(path,modified,mime_type),然后返回0.