Имам проект, работещ с Django CMS и django-mobile за изобразяване на различни шаблони към мобилни дефиниции.
С активирано кеширане на страници в Django CMS е възможно да видите пълния мобилен шаблон, показан в настолен браузър или обратното; десктоп на мобилно устройство.
От някои документи на Google вярвах, че решението на това е настройката на мидълуер за patch_vary_headers
;
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_PAGE_CACHE
не съм виждал шаблони за пълни страници, изобразени на грешни устройства, но имам страница, която е изобразена с шаблона за настолен компютър, но след това приложенията, изобразени на страницата чрез контейнери за CMS, са изобразили своя мобилен шаблон на работен плот. И това е докато CMS_PLACEHOLDER_CACHE
и CMS_PLUGIN_CACHE
все още са активирани.
Сега току-що намерих този доклад за грешка от 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',
)