【问题标题】:Django static files are not updatedDjango 静态文件未更新
【发布时间】:2013-07-20 14:08:16
【问题描述】:

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

【问题讨论】:

    标签: javascript django django-staticfiles django-caching


    【解决方案1】:

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

    【讨论】:

    • 这看起来很简单,确实不错,但不知何故我的 Firefox 不喜欢它,不确定其他浏览器。
    • 在 Chrome 中完美运行,最佳答案。谢谢。
    【解决方案2】:

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

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

    【讨论】:

    • 谢谢。我应该像这样使用"?get=parameter": 吗?然后将 {% statichash %} 添加到模板中?我刚刚尝试过,它似乎不喜欢 {% statichash %}。
    • 不,对不起,?get=parameter 只是我试图聪明并将解释和示例结合起来。只需将 sstatic 模板标签代码从 bitbucket 链接复制到您的模板标签文件中(如果您还没有,请查看 django 文档,了解如何添加一个)并使用 {% sstatic 'foobar' %} 而不是 {%静态 'foobar' %}。 Hieu Nguyen 的方法也应该有效,但尚未测试,可能需要将 ?v=0000X 移到 %} 之后。
    • 有没有办法做到这一点,而不用 {% statichash %} 替换每个文件的 {% static %}?
    【解决方案3】:

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

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

    1. 手动刷新页面

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

    1. 以特定时间间隔刷新页面(在本例中,浏览器每 3 秒刷新一次) &lt;head&gt;

      &lt;meta http-equiv="refresh" content="3" &gt;

      &lt;/head&gt;

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

      &lt;form&gt;

      &lt;INPUT TYPE="button" onClick="history.go(0)" VALUE="Refresh"&gt;

      &lt;/form&gt;

    【讨论】:

      猜你喜欢
      • 2020-12-11
      • 2017-05-03
      • 1970-01-01
      • 2020-09-20
      • 2021-08-25
      • 2019-08-31
      • 2014-11-12
      • 2021-05-30
      • 2021-04-03
      相关资源
      最近更新 更多