2
Safariを使用してログイン領域のキャッシュにdjangoの問題があります。Django Caching - ページの特定の部分にキャッシュしない
私は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
@AdamKGに同意します。最初に行うことは、ログイン情報を含む基本テンプレートを再確認することです。そこにキャッシュされますか?その後、残りのビュー*がキャッシュされていないことを確認してください。リクエストの現在の日時を示す '{%now" r "%}"を追加するだけです。これをベーステンプレートのログインセクションに追加することもできます。 –
Adam、 "ビュー依存HTML"を "ビュー関数"に変更しました。それが私の言いたいことです。 – DavidL