2011-10-20 33 views
1

我在Django Rest框架之上構建了一個RESTful API。該API的URL conf由基於類的視圖組成。Django - 基於類的視圖的URL緩存失敗

我想緩存這些視圖,但是,以下是失敗。任何想法,爲什麼這可能是,我怎麼可以改變它?

from django.views.decorators.cache import cache_page 

    urlpatterns = patterns('', 
    url(r'^dounces/?$', cache_page(60*60)(DounceListView.as_view(resource=DounceResource)), name='dounces_api'), 

我安裝了以下中間件。

'django.middleware.gzip.GZipMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.transaction.TransactionMiddleware', 
'django.contrib.redirects.middleware.RedirectFallbackMiddleware', 

,併爲當地的測試,我使用的是默認的緩存後端:

'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', 
+0

失敗怎麼辦?有錯誤,或只是不緩存頁面? –

+0

不緩存。我添加了一個包含中間件的列表,以防我在那裏丟失某些東西。 – Ben

+0

它如何失敗?你在運行uwsgi進程嗎?如果是這樣,那麼如果您的頁面在每個請求上生成不同的內容,則每個進程都將擁有自己的緩存版本。 –

回答

4

改變你的URLconf到

urlpatterns = patterns('', 
    url(r'^dounces/?$', cache_page(60*60)(DounceListView.as_view(resource=DounceResource)), name='dounces_api'), 
) 

也看到https://docs.djangoproject.com/en/1.7/topics/cache/#specifying-per-view-cache-in-the-urlconf

+1

這個答案已經過時。 [Django 1.6文檔](https://docs.djangoproject.com/en/1.3/topics/cache/#specifying-per-view-cache-in-the-urlconf)顯示裝飾器應該用作'cache_page( 60 * 60)(MyView.as_view())'。 – Alasdair