django mobile视图渲染到桌面&;使用缓存时,反之亦然
我有一个运行Django CMS的项目,用于向mobile定义呈现不同的模板 在Django CMS中启用页面缓存后,可以在桌面浏览器或其他方式上查看完整的移动模板;移动桌面 从一些谷歌文档中,我认为解决这个问题的方法是为django mobile视图渲染到桌面&;使用缓存时,反之亦然,django,caching,django-cms,Django,Caching,Django Cms,我有一个运行Django CMS的项目,用于向mobile定义呈现不同的模板 在Django CMS中启用页面缓存后,可以在桌面浏览器或其他方式上查看完整的移动模板;移动桌面 从一些谷歌文档中,我认为解决这个问题的方法是为补丁头设置中间件 from django.utils.cache import patch_vary_headers class VaryHeaderMiddleware(object): def process_response(self, request, re
补丁头设置中间件
from django.utils.cache import patch_vary_headers
class VaryHeaderMiddleware(object):
def process_response(self, request, response):
# Set Vary Header based on
# https://developers.google.com/webmasters/smartphone-sites/details
patch_vary_headers(response, ['User-Agent'])
return response
禁用CMS\u PAGE\u缓存
后,我没有看到完整页面模板呈现到错误的设备上,但是我得到了一个使用桌面模板呈现的页面,但是通过CMS占位符呈现到页面的应用程序已经将其移动模板呈现到桌面上。此时,CMS\u占位符\u缓存
和CMS\u插件\u缓存
仍处于启用状态
现在我刚刚从Django中发现了这一点,这表明在使用页面缓存装饰器时可以省略vary头,但是如果在缓存某些元素时看到模板呈现不匹配,这种情况会在更大范围内发生吗
我正在运行最新的django mobile 0.5.0,我相信所有中间件类都是按照正确的顺序定义的
'project.middleware.VaryHeaderMiddleware',
'django_mobile.middleware.MobileDetectionMiddleware',
'django_mobile.middleware.SetFlavourMiddleware',
'django_mobile.cache.middleware.CacheFlavourMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',
)
当CMS\u页面\u缓存
无法区分移动设备和桌面设备时,可以将其关闭并用模板片段缓存替换,请参阅
最简单的方法是用例如
{% load cache %}
{% cache 500 the_whole_page %}
并以
{% endcache %}
我还没有测试过,但应该能用