Cookie redirect

divined

Новичок
Я пытался патчить boost, т.к. именно он самое легкоуправляемое звено.

Сделал так что этот модуль по значению куки создавал разные страницы содержимого, например страница: site.ru/region?sort=f&data=true

При разных значениях куки:

EUR: site.ru_region+sort=f&data=true+e.html
RUR: site.ru_region+sort=f&data=true+r.html
USD: site.ru_region+sort=f&data=true+b.html

default: site.ru_region+sort=f&data=true+e.html

Но так и не смог настроить ни htacess ни nginx чтобы они выдавали разные файлы при разных значениях куки.
 

divined

Новичок
Вот такими правилами пытался выдавать кэш.

# RewriteCond %{HTTP_COOKIE} curr=r
# RewriteCond %{DOCUMENT_ROOT}/cache/normal/%{SERVER_NAME}%{REQUEST_URI}+%{QUERY_STRING}+r\.html -s
# RewriteRule .* cache/normal/%{SERVER_NAME}%{REQUEST_URI}+%{QUERY_STRING}+r\.html [L,T=text/html]

# RewriteCond %{HTTP_COOKIE} curr=b
# RewriteCond %{DOCUMENT_ROOT}/cache/normal/%{SERVER_NAME}%{REQUEST_URI}+%{QUERY_STRING}+b\.html -s
# RewriteRule .* cache/normal/%{SERVER_NAME}%{REQUEST_URI}+%{QUERY_STRING}+b\.html [L,T=text/html]
 

Redjik

Джедай-мастер
может стоит поискать тогда плагин для друпала, который кэширует куски кода, а не всю страницу.
 

divined

Новичок
Как я сказал, вопрос касается не только PHP, но и его в частности.
Например, почему указанная выше схема не работала, вернее она рабочая и все показывает правильно при первом посещении страницы.

Модуль Boost написан на php и мой патч для куки для него работает, создает разные страницы кэша для разного содержимого.
При первом обращении к странице создается сразу 3 html файла для всех валют, но есть у браузера такой кэш, который в фаербаге называется как "header cache" и он кэширует сам редирект, т.е. после повторного обращении к странице правила htacess уже не обрабатываются, а редирект проходит по значениям записанным в кэш браузера.

Значения заголовка no-cache и must-revalidate на этот кусок кэша не влияют.
После сброса кэша браузера происходит уже правильный редирект.

Вопрос по этому пункту: Есть какие то директивы или переменный в php, которые бы запрещали браузеру кэшировать "header cache"?
 

divined

Новичок
может стоит поискать тогда плагин для друпала, который кэширует куски кода, а не всю страницу.
Я думаю такого не существует, кроме как сторонних ПО, которые я и так использую, но они приносят всего 10% улучшений, кэширование же всей страницы увеличивает производительность на 70%.
 

divined

Новичок
Я рассказал практически все варианты которые я перепробовал, надеялся что кто-то может подсказать то что я пропустил в своих экспериментах. Обобщу все варианты и проблемы:


Мультивалютность на основе куки.

1. Модуль Boost (кэширование полной страницы в html). Проблема: Кэширование цели редиректа браузером, отсутствие повторного анализа htacess.
2. Встроенное кэширование CMS и кэширование кусками сторонним ПО. Проблема - отсутствие параметров в ГЕТ массиве и соответственно одинаковая выдача из кэша при разных значениях куки.

Мультивалютность на основе JS.

С кэшированием проблем нет. Проблема с большым количеством обрабатываемых данных и медленной скоростью работы + невозможность или очень трудоемкая задача по изменению внутренних параметров поиска и фильтрации на основе этих цен.
 

divined

Новичок
Может ли кто посодействовать, по Скайпу например. На форуме я не могу выложить свои мысли так что бы их понял любой, все таки у нас мозги работают у всех по разному. И мое понятие "понятного изложения" в корне отличается от вашего.
 

divined

Новичок
Мультивалютность на основе куки.
1. Модуль Boost (кэширование полной страницы в html). Проблема: Кэширование цели редиректа браузером, отсутствие повторного анализа htacess.
2. Встроенное кэширование CMS и кэширование кусками сторонним ПО. Проблема - отсутствие параметров в ГЕТ массиве и соответственно одинаковая выдача из кэша при разных значениях куки.
Искомый вариант решения: искусственное внедрение значение валюты или в массив ГЕТ или в адрес страницы.

Мультивалютность на основе JS.
С кэшированием проблем нет. Проблема с большым количеством обрабатываемых данных и медленной скоростью работы + невозможность или очень трудоемкая задача по изменению внутренних параметров поиска и фильтрации на основе этих цен.
Варианты решения в голову не приходят.
 

divined

Новичок
думаю можно еще решить через поддомены, например:

rur.site.ru и usd.site.ru
 

divined

Новичок
или через префиксы:

site.ru/usd/region и site.ru/rur/region


Но в этом случае пока не представляю как нужно сделать редиректы.
 

Beavis

Banned
не проще не мучаться с какими-то непонятными модулями, а настроить кеш целиковой страницы в nginx'е?
 

divined

Новичок
Можешь рассказать подробнее, ты тоже наверно столкнулся с тем что автор сервачка не особо распространяется факами, а сообщество все делает методом научного тыка.

Можешь помочь с этим по скайпу, т.е. правильно настроить индейца. =)
 

Beavis

Banned
я думаю что информации в интернете про директиву proxy_cache_key достаточно
 

divined

Новичок
нашел, добавил, все прописал

прироста производительности 0%.
 

weregod

unserializer
divined, тред не читал, но если у вас какая зависимость от кэша по URL, передавайте в URL все параметры, от которых зависит выдача.
 

divined

Новичок
proxy_cache_path /var/cache/nginx levels= keys_zone=pagecache:32m inactive=60m max_size=1G;

proxy_cache_valid 200 301 302 304 5m;
proxy_cache_key "$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri|$cookie_curr";
proxy_hide_header "Set-Cookie";
proxy_ignore_headers "Cache-Control" "Expires";
proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504;

proxy_cache pagecache;


---------

включаю.
Команда ab -n 1000 -c 100 http://rkreal.ru - выполняется на ура по 8 мс в пике, с отключенным доходит до 15000. Вроде бы как все работает.

Захожу в браузере, как происходил ГЕТ запрос страницы 1,5 сек так и происходит и при повторном обращении также.
Смотрю в файербаге пишет 100% размера из кэша.
Делаю изменения на странице обновляю - изменения отображаются, хотя настроен кэш на 60 минут - следовательно кэш не работает или работает неверно.
 

divined

Новичок
Так же не работает авторизация на сайте при включенном кэшировнаии nginx ((
 
Сверху