2017-03-29 6 views
-1

Djangoのサイトごとのキャッシュ(https://docs.djangoproject.com/en/1.10/topics/cache/#the-per-site-cache)をDjango CMSで設定しようとしていますが、CMSページで動作するようにキャッシュを取得できませんが、アピールされたページ。Django CMSのサイトごとのキャッシュがCMSページで機能しない

これは私の設定の抜粋です:

MIDDLEWARE_CLASSES = [ 
    'django.middleware.cache.UpdateCacheMiddleware', 
    'django.middleware.gzip.GZipMiddleware', 
    'htmlmin.middleware.HtmlMinifyMiddleware', 
    'htmlmin.middleware.MarkRequestMiddleware', 
    'cms.middleware.utils.ApphookReloadMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.locale.LocaleMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
    'django.contrib.redirects.middleware.RedirectFallbackMiddleware', 
    'cms.middleware.user.CurrentUserMiddleware', 
    'cms.middleware.page.CurrentPageMiddleware', 
    'cms.middleware.toolbar.ToolbarMiddleware', 
    'cms.middleware.language.LanguageCookieMiddleware', 
    'django.middleware.cache.FetchFromCacheMiddleware', 
] 

CACHE_MIDDLEWARE_ALIAS = 'default' 
CACHE_MIDDLEWARE_SECONDS = 60 
CACHE_MIDDLEWARE_KEY_PREFIX = 'mysite-' 
CMS_PAGE_CACHE = True 

CACHES = { 
    'default': { 
     'BACKEND': 'django.core.cache.backends.db.DatabaseCache', 
     'LOCATION': 'cache_table', 
     'TIMEOUT' : 60*60*24, 
     'OPTIONS': { 
      'MAX_ENTRIES': 10000, 
     } 
    } 
} 

私はapphookedページに移動した場合、レスポンスヘッダがある:正しい

Cache-Control: max-age=60 

。間違っている

Cache-Control: max-age=0, no-store, no-cache, must-revalidate 

:しかしCMSのページを持つ私は、ヘッダーを取得します。

Django CMSのドキュメント(http://docs.django-cms.org/en/release-3.4.x/how_to/caching.html)では、UpdateCacheMiddlewareが最初にFetchFromCacheMiddlewareを最後に使用するように指定されています。これは私がやったことであり、運がないことです。

私はサーバーを再起動しました。ページの内容を更新して再公開しましたが、運がまだありません。

ここでは何が欠けていますか?

ご協力いただければ幸いです。

+0

CMSとページ編集モードでログインしていますか?チェックしたら? –

+0

いいえ、私は私がログインしていない別のブラウザから引っ張ったヘッダーです。ありがとう – tdsymonds

+0

なぜ落選ですか? – tdsymonds

答えて

2

何時間もの苦痛と苦痛の後、私は最終的にここで問題を把握することができました。問題は、例えば、私は私がいないキャッシュに設定していたいくつかのカスタムプラグインを持っていたという事実に起因した:ないキャッシュに設定されたプラグインがあるページで

from cms.plugin_base import CMSPluginBase 
from cms.plugin_pool import plugin_pool 

class MyPlugin(CMSPluginBase): 
    name = 'My plugin' 
    cache = False 
    ... 

plugin_pool.register_plugin(MyPlugin) 

、キャッシュ制御ヘッダーがあります表示:

Cache-Control: max-age=0, no-store, no-cache, must-revalidate 

私は正しいと思います。あなたはそのページからプラグインを削除した場合、あなたが期待されるヘッダを取得:

Cache-Control: max-age=60 

をうまくいけば、これは他の誰か1日に役立ちます。

関連する問題