Кто может оказать содействие в доработке модуля boost?
Смысл доработки:
Учитывать значение Cookie для генерации нового вида страницы в кэшэ.
Часть которая касается выбора файла для реврайтинга в .htaccess я сделал.
Т.е. Правило читает куки, и на основании его значения выбирает файлы для вывода:
1. site.ru/page1.html.gz //Если куки нет
2. site.ru/page1+r.html.gz //Если значение куки = r и т.д.
Требуется чтобы boost создавал разные варианты кэша для разных значений куки.
..Где будет использоваться:
На кукисах основан выбор валюты на сайте, соответственно значения куки могут быть r-рубли, b-баксы, e-евро.
Комментарии
Вроде решено, требует проверки:
В boost.module в функцию boost_file_path перед
<?php
if ( strpos($path, '..') !== FALSE
?>
пишем:
<?php
$cookie_value = $_COOKIE['cookie_name'];
if ($cookie_value!=null) {
$path.= '+'.$cookie_value;
}
?>
Теперь у нас генерируются файлы кэша для разного содержания определенной куки.
Далее в .htaccess:
RewriteRule .* cache/normal/%{SERVER_NAME}%{REQUEST_URI}+%{QUERY_STRING}\.html\.gz [L,T=text/html]
меняем на:
RewriteCond %{HTTP_COOKIE} cookie_name=cookie_value
RewriteRule .* cache/normal/%{SERVER_NAME}%{REQUEST_URI}+%{QUERY_STRING}+cookie_value\.html\.gz [L,T=text/html]
#это повторяем для каждого из возможных значений куки,
#заменяя значения cookie_name и cookie_value
#возможно есть и более элегантный и универсальный метод, но я его не знаю
#и для тех у кого куки еще нет:
RewriteCond %{DOCUMENT_ROOT}/cache/normal/%{SERVER_NAME}%{REQUEST_URI}+%{QUERY_STRING}\.html\.gz -s
RewriteCond %{HTTP_COOKIE} !(cookie_name)
RewriteRule .* cache/normal/%{SERVER_NAME}%{REQUEST_URI}+%{QUERY_STRING}\.html\.gz [L,T=text/html]
Еще надо не забыть + поменять на ваши разделители аргументов и повторить для несжатого содержимого
Нашел проблемку, если кэш создался для пользователей с пустыми кукисами, то для других уже не создается, будем ковырять дальше
Вот такой вариант работает, устанавливает дефолтное значение для куки, уходим от стандартного именования файла вообще.
Осталось проверить все функции модуля, очищение и т.д. и т.п.
<?php1
$cookie_value = $_COOKIE['cookie_name'];
if ($cookie_value!=null) {
$path.= '+'.$cookie_value;
} else $path.= '+cookie_deafult_value;
?>
RewriteCond %{HTTP_COOKIE} cookie_name=cookie_value
RewriteRule .* cache/normal/%{SERVER_NAME}%{REQUEST_URI}+%{QUERY_STRING}+cookie_value\.html\.gz [L,T=text/html]
#это повторяем для каждого из возможных значений куки,
#заменяя значения cookie_name и cookie_value
#возможно есть и более элегантный и универсальный метод, но я его не знаю
#и для тех у кого куки еще нет:
RewriteCond %{DOCUMENT_ROOT}/cache/normal/%{SERVER_NAME}%{REQUEST_URI}+%{QUERY_STRING}+cokie_default_value\.html\.gz -s
RewriteCond %{HTTP_COOKIE} !(cookie_name)
RewriteRule .* cache/normal/%{SERVER_NAME}%{REQUEST_URI}+%{QUERY_STRING}+cokie_default_value\.html\.gz [L,T=text/html]