Django静态文件未更新

时间:2013-07-21 22:05:20

标签: javascript django django-staticfiles django-caching

在我的Django项目中,应用程序my_app有一个引用javascript静态文件的模板:

<script src="{% static 'my_app/my_script.js' %}"></script>

一旦我在my_app / templates / my_app中安装my_script.js,一切似乎都有效。 在某些时候,我用不同的脚本覆盖my_script.js,这样my_script.js现在有不同的内容。

但是,当我使用浏览器加载my_app时,它会加载旧的my_script.js,尽管它不再存在。 我该如何解决? 感谢。

3 个答案:

答案 0 :(得分:6)

我经常使用?v=00001或任何定义号来强制清除浏览器中的缓存。所以在你的情况下它可能是:

<script src="{% static 'my_app/my_script.js?v=00001' %}"></script>

或者:

<script src="{% static 'my_app/my_script.js' %}?v=00001"></script>

下次更改脚本时,请将数字增加到00002.当然有很多方法可以做到这一点,但我仍然更喜欢这种方法。

答案 1 :(得分:2)

您可以添加缓存清除?get =参数。我喜欢定义一个{%statichash%}模板标记来读取文件,并将文件内容的散列作为get参数附加。这是类似的,使用文件的修改时间而不是哈希,但同样的想法:

https://bitbucket.org/ad3w/django-sstatic/src/4401a4bc3058618dfc2eafaee6a23d287a99ede5/sstatic/templatetags/sstatic.py?at=default

答案 2 :(得分:0)

我通过编写代码来修复浏览器来修复它。 这样,它将始终获取最新更新的静态文件而不是 从缓存中读取。

有3种方法可以做到这一点。

  1. 手动刷新页面
  2. 将Windows操作系统与浏览器谷歌浏览器或IE9一起使用,点击(CTRL + F5)

    1. 按特定时间间隔刷新页面(在此示例中,浏览器每3秒刷新一次) <head>

      <meta http-equiv="refresh" content="3" >

      </head>

    2. 用户点击按钮时刷新页面

      <form>

      <INPUT TYPE="button" onClick="history.go(0)" VALUE="Refresh">

      </form>