Найти - Пользователи
Полная версия: Cache и приват-data
Начало » Django » Cache и приват-data
1
romankrv
Здравствуйте .

В описании по кэшу в офф документации сказано (как я понял) что использование декоратора @cache_control(private=True) с опцией private=True защищает данные помещенные в публичный кэш от просмотра другими клиентами. Но когда я пробую данный пример у себя то есть беру два клента (опера и мозилла) отключаю там все кэши в одном клиенте запускаю l0 которая помещает в кзш строку а во втором клиенте ,как я понял, при запуске l1 не должно считыватся значение ‘my_key’ но это происходит.
Веро ли такое поведение если верно то в чем заключается принцип этого “защищенного” кэша?
from django.core.cache import cache
from django.views.decorators.cache import cache_control
@cache_control(private=True)
def l0(request):
cache.set('my_key', 'hello, world!!', 3000)
return HttpResponse('')

@cache_control(private=True)
def l1(request):
a = cache.get('my_key')
return HttpResponse(a)
Спасибо

ps
правильно ли я понял что кэш можно использовать для помещения туда переменных от разных клиентов под одним и тем же ключом если эти данные обернуты @cache_control(private=True)?
Александр Кошелев
Ты путаешь кеш браузера (за который как раз и отвечает cache_control) и серверный кеш самой джанги. В общем, ты не так используешь.
romankrv
Daevaorn
Ты путаешь кеш браузера (за который как раз и отвечает cache_control) и серверный кеш самой джанги. В общем, ты не так используешь.
1) то есть я правильно понял что django.core.cache import cache – это серверный кеш Джанги? И команда cache.set('my_key', ‘hello, world!!’, 3000) помещает именно туда данные в незащищенном виде?

2) а django.views.decorators.cache import cache_control –это кэш браузера

то есть если @cache_control(private=True) отвечает за кэш браузера то он должен помещать туда зашифрованные данные и считывать оттуда–предварительно расшифровав,? Чего я не наблюдаю. В кэш попадает страница с открытым текстом. Я не пойму назначения тогда этого декоратора смотрел исходник а документации написано что :

A user usually faces two kinds of caches: his own browser cache (a private cache) and his provider's cache (a public cache). A public cache is used by multiple users and controlled by someone else. This poses problems with sensitive data: You don't want, say, your banking-account number stored in a public cache. So Web applications need a way to tell caches which data is private and which is public.

The solution is to indicate a page's cache should be “private.” To do this in Django, use the cache_control view decorator.
Александр Кошелев
romankrv
то есть если @cache_control(private=True) отвечает за кэш браузера то он должен помещать туда зашифрованные данные и считывать оттуда–предварительно расшифровав,?
Нет. С чего ты это взял?
romankrv
Я не пойму назначения тогда этого декоратора смотрел исходник а документации написано что :
ты сам цитату привел и сам же её не понял?
romankrv
A user usually faces two kinds of caches: his own browser cache (a private cache) and his provider's cache (a public cache). A public cache is used by multiple users and controlled by someone else. This poses problems with sensitive data: You don't want, say, your banking-account number stored in a public cache. So Web applications need a way to tell caches which data is private and which is public.
romankrv
Да немного разобрался
по документации http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB