2014-09-28 67 views
0

我在Apache上提供一个Django应用程序,在我最近的部署之后,我注意到很多用户正在服务于新版本的主HTML文件,但他们仍然从他们的Cache中挑选旧的JS文件。强制静态文件永不缓存

我试过类似patch_cache_control(response, no_cache=True, no_store=True, must_revalidate=True)的东西,但这似乎不适用于静态文件。

有没有一种方法可以在访问页面时始终强制从服务器重新获取每个静态?

+0

Google:'E-Tag','Last-Modified-Since'。在提供静态文件时,Apache应该能够添加这些头文件。您的浏览器将根据这些标头确定是否应将静态文件从其缓存中取出。另外:为了提高性能,直接提供静态文件,而不是通过Django。这应该仅由您的网络服务器处理。 – Bjorn 2014-09-28 19:51:56

回答

0

你可以用你的标题做很多事情。

或者你可以使用类似{% static 'js/jquery.js' %}?v={{ settings.CURRENT_VERSION }}的东西,这样浏览器会认为你使用的是一个全新的文件,因为文件的名称可能类似于jquery.js?v=1。我不会真的建议这样做,但它是一个非常快速的黑客攻击。