【问题标题】:How do i cache bust with Django's staticfiles?如何使用 Django 的静态文件缓存半身像?
【发布时间】:2015-07-04 17:31:40
【问题描述】:

我有一个包含图片的网页。我希望使用 ? 缓存该图像?技术。但是,静态文件将问号编码为“%3F”,因此路径不再正确。

{% load staticfiles %}
<img src="{% static 'poll/img/test.jpg?v2' %}">

编译为。

<img src="/static/poll/img/test.jpg%3Fv2">

没有test.jpg%3Fv2 文件。所以不显示。使用static 可以正常工作。

{% load static %}
<img src="{% static 'poll/img/test.jpg?v2' %}">

Get 已按预期编译。当我从云服务提供静态文件时,我想使用 staticfiles 而不是 static。有没有办法阻止我的字符串路径的编码或问题的解决方法?

【问题讨论】:

  • 我会告诉你使用ManifestStaticFilesStorage,但这是不可能的,因为你使用的是云服务。您的云服务是否提供类似的缓存清除解决方案?
  • 我使用 S3 和云端。我可以清除记录并用相同的名称重新上传上传的文件名,希望新版本能够提供给所有人,并且没有浏览器会继续缓存旧版本。忽略遥远的未来缓存到期。这似乎有风险且不可靠。我更愿意只保留“?”我知道这会产生完全令人满意的结果。我使用django-compressor,它为css 和js 文件生成一个唯一的名称。遗憾的是它不支持图片。
  • 好吧,我猜你可以在后台使用staticfiles的模板标签代码编写一个自定义模板标签,但按你需要的方式处理GET参数。

标签: django django-templates django-staticfiles


【解决方案1】:

要解决编码问题,要么编写您自己的静态标签版本,要么简单地将参数移到标签之外。

{% load staticfiles %}
<img src="{% static 'poll/img/test.jpg' %}?v2">

【讨论】:

    猜你喜欢
    • 2020-07-31
    • 1970-01-01
    • 2012-12-23
    • 2017-08-22
    • 2013-10-06
    • 1970-01-01
    • 2016-08-27
    • 2017-01-01
    • 2021-05-11
    相关资源
    最近更新 更多