【发布时间】:2017-03-29 09:00:59
【问题描述】:
我正在尝试使用 Django CMS 设置 Django 的每个站点缓存 (https://docs.djangoproject.com/en/1.10/topics/cache/#the-per-site-cache),但我无法让缓存适用于 CMS 页面,但它适用于 apphook 页面。
这是我的设置的 sn-p:
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,
}
}
}
如果我导航到一个 apphook 页面,响应头是:
Cache-Control: max-age=60
这是正确的。但是,通过 CMS 页面,我得到了标题:
Cache-Control: max-age=0, no-store, no-cache, must-revalidate
这是不正确的。
Django CMS 文档 (http://docs.django-cms.org/en/release-3.4.x/how_to/caching.html) 说 UpdateCacheMiddleware 应该是第一个 FetchFromCacheMiddleware 最后,这是我所做的,但没有运气。
我已经重新启动服务器,尝试更新页面上的内容并重新发布,但仍然没有成功。
我在这里错过了什么?!
任何帮助将不胜感激。
【问题讨论】:
-
您是否已登录 CMS 并处于页面编辑模式?你什么时候检查?
-
不,我不是,我从未登录的其他浏览器中提取的标题。谢谢
-
为什么投反对票?
标签: django caching django-cms