Допустим, юзер пишет адрес site.ru/file.cache.
Кэш-файл может отсутствовать или же быт устаревшим, если кеш невалидный, то переадресовать на скрипт.
Вот что я нашел для прописания в .htaccess:
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^file\.cache$ file.php [L]
Т.е. если файла не существует или он имеет нулевой размер, то происходит переадресация на скрипт, генерирующий кэш.
Но я нигде не нашел как узнать о запрошенном файле время последнего изменения и учесть его в условии.
Спустя 8 минут, 14 секунд (28.03.2010 - 15:10) glock18 написал(а):
Iskatel13
насколько я знаю, на уровне mod_rewrite сделать это нельзя.
насколько я знаю, на уровне mod_rewrite сделать это нельзя.
Спустя 30 минут, 57 секунд (28.03.2010 - 15:41) Guest написал(а):
Да уж... Но есть иной вариант. А если в имени файла будет указана дата и время создания увеличенная на время валидности кэша?
file-YYMMDDHHMM.cache
Тогда можно будет через регулярки выловить эти цифры и сравнить с текущей датой. Тока помогите внести в пример изменения
file-YYMMDDHHMM.cache
Тогда можно будет через регулярки выловить эти цифры и сравнить с текущей датой. Тока помогите внести в пример изменения
Спустя 2 часа, 38 минут, 54 секунды (28.03.2010 - 18:20) Iskatel13 написал(а):
Все работает! Только вот одна проблема:
однако обнаружил что переменные сервера вида %{переменная} с правой стороны RewriteCond от "<",">","=" почему то не действуют. Ставил цифру вместо - работало идеально! Нигде не находил информации, что переменные можно только с левой стороны использовать. Но как блин сравнить 2 переменных тогда...
#RewriteRule ^1-([0-9]{10,12})\.cache$ - [C,E=DATE:$1]
#RewriteCond %{REQUEST_FILENAME} !-s [OR]
#RewriteCond %{ENV:DATE} <%{TIME_YEAR}%{TIME_MON}%{TIME_DAY}%{TIME_HOUR}%{TIME_MIN}
#RewriteRule ^1-([0-9]{10,12})\.cache$ 1.php [L]
однако обнаружил что переменные сервера вида %{переменная} с правой стороны RewriteCond от "<",">","=" почему то не действуют. Ставил цифру вместо - работало идеально! Нигде не находил информации, что переменные можно только с левой стороны использовать. Но как блин сравнить 2 переменных тогда...