0

我有一个使用 django-compressor + memcached 建立的 django 网站。不确定它是什么时候开始的,但我每分钟都在寻找新的 css 和 js 文件,.../collect_static/CACHE/css比如..../collect_static/CACHE/jsoutput.2fde5b60eff0.css

我用django.contrib.staticfiles.storage.ManifestStaticFilesStorage.

我不知道这是正常的,还是由于配置错误而发生的。但是每隔几天,我就需要因此清理服务器。

有什么建议吗?

更新:这似乎是因为 css 和 js 代码中的模板变量,根据这个答案,但由于我有很多这样的变量,我仍然不知道如何解决这个问题。

4

1 回答 1

0

好的,所以我找到了根本原因。它实际上并不像{{context_data_var}}压缩代码中那样存在模板变量。

它是任何此类变量的存在,其值在每次请求时都会发生变化。我有两个这样的例子:

  1. 第三方存储服务(例如 Google 或 Amazon)的存储密钥
  2. 用于各种 ajax 请求的 csrf 令牌

对于上面的 1.,我只是将这样的代码移到了 compress 之外。

对于 2.,解决方案略有涉及。我不得不放弃使用{{csrf_token}}. Django 在这里详细解释了它。我们需要使用csrftokencookie 而不是变量,如果模板{{csrf_token}}中至少有一个,django 会设置这个 cookie 。{% csrf_token %}幸运的是,我的基本模板中有一个,所以 cookie 已经为我设置好了。我还getCookie()为所有页面定义了函数。

因此,我能够摆脱我的问题中解释的问题。

于 2021-02-05T21:48:50.383 回答