2009-07-16 8 views
1

私はDjangoで書かれたブログを持っており、ファイルシステムのキャッシュバックエンドで基本のDjangoキャッシングミドルウェアを使い始めました。残念ながら、これではキャッシュされていなかった2つの問題が発生しました。つまり、ログインしたユーザーの管理リンク(「この投稿の編集」など)とCookieに基づいた事前入力のコメントフォーム です。 ブログのDjangoキャッシング

がその周りを取得するには、私は、テンプレートキャッシュのタグを使用して開始しました:

{% load cache %} 

...admin links... 
{% cache 500 blog_entry entry.id %} 
...entry... 
{% endcache %} 
...comment form... 

しかし、ページ全体がまだだけでなく、キャッシュされたなっていたようでした。キャッシングシステムをに設定するにはどうすればいいですか明示的に設定するテンプレートの部分をキャッシュするのはですか?

編集:コメントのために、誰かがブログにコメントすると、その名前、ウェブサイト、および電子メールアドレスがセッション変数に格納されます。彼らがサイトに戻ってきたら、フォームのこれらの部分にそのデータをあらかじめ入れておきます。しかし、これは、キャッシング・システムが、あらかじめデータが入っているビューをキャッシュすることが可能であることを意味します。

答えて

5

あなたのsettings.pyにこれを追加します。

CACHE_MIDDLEWARE_ANONYMOUS_ONLY = True 

これは、私は非常にあなたの第二の問題(あらかじめ入力コメント)が何であるか理解していない管理者リンクの問題を解決する必要がありますか?

+0

これは機能し、シンプルです。 複雑なソリューションは、キャッシュを下に移動することです(キャッシュされたページではなくキャッシュデータ)。しかし、最高の解決策ではありません。 iBeginやCurse.comは、一般的なデータでキャッシュ可能なページをレンダリングし、Javascriptを使用してログインした特権ユーザーのコンテンツ(管理リンク、Helloユーザー名など)を挿入すると述べました。これはより複雑ですが、実際にレンダリングされたコンテンツのキャッシングを最大限に活用します。 – joej

+0

@Daveyjoe - ありがとう! – tghw

+0

@joej - 私は、JSフォームを使ってコメントフォームを作成することがあります。ありがとう。 – tghw

7

ページ全体ではなくテンプレートフラグメントをキャッシュするようになったので、キャッシングミドルウェアを削除する必要があります。

関連する問題