【问题标题】:Django Caching - Not caching for certain part of the pageDjango Caching - 不缓存页面的某些部分
【发布时间】:2012-02-11 15:08:15
【问题描述】:

我在使用 Safari 登录区域时遇到 django 缓存问题。

当我使用 memcache 并打开 'django.middleware.cache.FetchFromCacheMiddleware' 时,页面的登录部分始终被缓存,即使在我按下注销后仍显示“欢迎用户名”。

点击注销后,它应该变回“登录/注册”链接。这似乎只发生在野生动物园中。有没有办法不缓存 HTML 页面的一部分?在查看功能时,我使用了@never_cache,但此登录信息是 base.html 的一部分,它在其他站点模板 html 中得到扩展。

谢谢。

代码

在base.html中

{% if user.is_authenticated %}
        <div class="login">
        <a id="login_dropdown_link" title="Login_nav">Welcome {{ user.username }} ( <span id="total_count"> {% total_count %}</span> )</a>
        </div>
{% else %}
        <div class="login">
        <span class="spaced"><a href="/accounts/login" id="login-link" class="red">Log In | Sign Up</a></span>
        </div>
{% endif %}

【问题讨论】:

  • @never_cache 用于视图函数,我不明白“视图依赖的 HTML”是什么意思。 Django 有模板片段缓存,但这听起来像是您的 HTTP 缓存指令的问题。 HTTP 级缓存发生在每个请求的粒度上 - 没有办法说“不缓存此请求的 部分”,只有“缓存此请求”或“不缓存此请求” .
  • 同意@AdamKG。首先要做的是重新检查包含登录信息的基本模板——它是否缓存在那里?然后确认视图的其余部分没有 被缓存,比如添加{% now "r" %},它将显示请求的当前日期和时间。您可能还想将其添加到基本模板的登录部分!
  • 亚当,我将“查看依赖的 HTML”更改为“查看函数”。我就是这个意思。
  • 乔丹,尝试了 {% now "r" %} 并且似乎 safari 没有刷新页面,所以它导致了这个错误。其他浏览器(例如 Chrome 和 FF)会刷新并更改当前时间。

标签: django caching memcached


【解决方案1】:

这很可能是由于标头问题导致 Safari 被指示将页面缓存一段时间。

【讨论】:

    猜你喜欢
    • 2012-02-10
    • 1970-01-01
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    相关资源
    最近更新 更多