【发布时间】:2020-05-22 11:07:57
【问题描述】:
我正在尝试将 AWS ElastiCache 的 Memcached 实例与 Django 项目一起使用。它似乎正在为用户缓存视图,但如果您在不同的 PC 上进入,它不会被缓存,直到从该 PC(或具有不同浏览器的同一 PC)调用。
我不确定我做错了什么。
在settings.py我有
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': os.environ.get('CACHE_LOCATION','127.0.0.1:11211'),
}
}
MIDDLEWARE = [
'core.middleware.DenyIndexMiddleware',
'core.middleware.XForwardedForMiddleware',
'core.middleware.PrimaryHostRedirectMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.contrib.redirects.middleware.RedirectFallbackMiddleware',
'masquerade.middleware.MasqueradeMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.sites.middleware.CurrentSiteMiddleware',
'cms.middleware.user.CurrentUserMiddleware',
'cms.middleware.page.CurrentPageMiddleware',
'cms.middleware.toolbar.ToolbarMiddleware',
'cms.middleware.language.LanguageCookieMiddleware',
'cms.middleware.utils.ApphookReloadMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',
]
然后我使用cache_page缓存了视图
path('<str:service_type>/<str:location>/', cache_page(60*60)(views.canonical_search), name="canonical-search"),
如何缓存站点,以便无论用户如何都可以缓存页面?
编辑 我注意到在使用用户登录时它永远不会缓存。
【问题讨论】:
-
您好!所有用户的 URL 都相同吗?我怀疑是这样,但如果不是,那就是问题所在,因为缓存系统基于每个 URL 而不是基于每个视图进行缓存。
-
url 对所有用户都一样
-
用户是指登录/匿名吗?您的 Web 服务器 (nginx/apache) 中是否有任何缓存策略?
-
@SebCorbin 我正在使用 ElasticBeanstalk,但我没有明确设置任何缓存。不知道ElasticBeanstalk有没有
标签: django