2012-04-12 10 views
0

私はdjangoで実装されたREST-fulサービスを持っており、アクセスされた各リソースについて、アクセスされる可能性のある関連データをキャッシュしたいと思います。プレキャッシュdjango RESTビュー

例えばressource http://www.example.com/publication/1280は、XML応答を与える:

<publication xmlns="http://www.example.com" xmlns:atom="http://www.w3.org/2005/atom"> 
<abstract>None</abstract> 
<owner> 
    <atom:link rel="owner" type="application/xml" href="http://www.example.com/user/1">ckpuser</atom:link> 
</owner> 
<authors> 
<author> 
    <atom:link rel="author" type="application/xml" href="http://www.example.com/author/564">P. Almquist</atom:link> 
</author> 
</authors> 
<comments></comments> 
<tags></tags> 
<keywords></keywords> 
<referencematerials></referencematerials> 
<peerreviews></peerreviews> 
<fields> 
<howpublished>RFC 1349 (Proposed Standard)</howpublished> 
<url>http://www.ietf.org/rfc/rfc1349.txt</url> 
</fields> 
</publication> 

その後、私はressources http://www.example.com/user/1http://www.example.com/author/564に関連付けられたキャッシュデータを事前にしたいと思います。

Webサービスと同様に、与えられたレスポンスはデータ構造のようなものです。この全体のレスポンスをクエリーセットよりもキャッシュするほうが良いと思います。クエリーセットをキャッシュすると、ressourceにアクセスするたびにテンプレートレンダリングに時間がかかります。

これは良いアプローチですか?何か不足していますか?このアプローチは、右のであれば、どのように私は前ジャンゴ

'django.middleware.cache.UpdateCacheMiddleware'

'django.middleware.cache.FetchFromCacheMiddleware'が提供するミドルウェアを使用してビューをキャッシュすることができ

答えて

0

は、Djangoのper-view cacheを試していただき、ありがとうございます。

基本的に、それはキャッシュキーとしてURL(およびいくつかの他のもの)を使用し、このように実装されています。これは、あなたが疑われるとして必要となるビューのXML出力を、キャッシュします

from django.views.decorators.cache import cache_page 

@cache_page(60 * 15) # cache for 15 minutes 
def my_view(request): 
... 

クエリーセットをキャッシュするだけの場合に比べてキャッシュが有効である間に取得するリソースが少なくなります。

キャッシュミドルウェアdjango.middleware.cache.UpdateCacheMiddlewaredjango.middleware.cache.FetchFromCacheMiddlewareは、サイト全体をキャッシュします。これはほとんどの場合、必要なものではありません。

関連する問題