5

在我的 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,尽管它不再存在。我该如何解决?谢谢。

4

3 回答 3

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。当然有很多方法可以做到,但我还是更喜欢这种方法。

于 2013-07-21T22:49:27.140 回答
2

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

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

于 2013-07-21T22:40:31.797 回答
0

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

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

  1. 手动刷新页面

使用带有 Google Chrome 或 IE9 浏览器的 Windows 操作系统,点击 (CTRL + F5)

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

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

    </head>

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

    <form>

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

    </form>

于 2015-07-21T22:25:29.987 回答