Пожелание по mod_rewrite

Igor Sysoev is at rambler-co.ru
Tue Mar 15 20:48:35 MSK 2005


On Tue, 15 Mar 2005, Andrew Velikoredchanin wrote:

> Igor Sysoev пишет:
>> On Tue, 15 Mar 2005, Andrew Velikoredchanin wrote:
>> 
>>> Igor Sysoev пишет:
>>> 
>>>> On Tue, 15 Mar 2005, Andrew Velikoredchanin wrote:
>>>> 
>>>>> Igor Sysoev пишет:
>>>>> 
>>>>>> On Tue, 15 Mar 2005, Andrew Velikoredchanin wrote:
>>>>>> 
>>>>>>> Boguk Maxim пишет:
>>>>>>> 
>>>>>>>> Генератор статического HTML и кеширование с возможностью сброса 
>>>>>>>> отдельных
>>>>>>>> документов по инициативе backend почти одно и тоже.
>>>>>>>> При этом кеширование не генерирует заведомо не используемые страницы 
>>>>>>>> в
>>>>>>>> отличии от генераторов статического html.
>>>>>>>> В общем реально надо механизм сброса части кеша по regexp по 
>>>>>>>> инициативе
>>>>>>>> backend вот.
>>>>>>>> (полный сброс не предлагать при обьеме кеша 10Gb+ :))
>>>>>>>> Мне бы тоже пригодилось.
>>>>>>> 
>>>>>>> 
>>>>>>> Ну, скажем, не со стороны бэкэнда, а со стороны вообще. :) Как вариант 
>>>>>>> - введение условий либо в механизм кэша, либо в mod_rewrite.
>>>>>>> 
>>>>>>> Кстати, Игорь. Если делать механизм условного кэширования на основе 
>>>>>>> времени спец. файла и времени кэша текущего файла, то надо учитывать 
>>>>>>> что путь к спец. файлу должен строиться на основе url. Только вот без 
>>>>>>> regexp думаю, здесь не обойтись. Т.к. при необходимости введения спец. 
>>>>>>> файла для каталогов нужно иметь возможность указывать не весь url, а с 
>>>>>>> учетом уровня вложенности.
>>>>>> 
>>>>>> 
>>>>>> Файлы ограничивают использование одной машиной. regex'ы использовать
>>>>>> нереально. Я вижу такое решение: нужно добавлять в заголовок ответа 
>>>>>> ключ(и),
>>>>>> от которого зависит кэширование. Запросы, после которых часть ответов
>>>>>> становятся неверными (например, POST'ы), должны передавать такой же 
>>>>>> ключ.
>>>>>> Эти ключи будут храниться в своём кеше.
>>>>> 
>>>>> 
>>>>> Игорь, извини, но ничего не понял. Как в таком режиме из стороннего 
>>>>> скрипта, который выполняется на сервере по крону указать что определення 
>>>>> группа файлов в кэше уже не актуальна?
>>>> 
>>>> 
>>>> Сторонние скрипты не нужны. Бэкенд в ответе передаёт заголовок
>>>> "X-Accel-Key: <md5> <md5> ...". При проверке закэшированного ответа
>>>> будут также проверяться время обноволения каждого ключа. Если ответ
>>>> старше, чем любой ключ, то запрос уходит к бэкенду. Запросы, которые
>>>> могут повлиять на подобные закэшированные ответы, должны содержать
>>>> специальное поле с ключом. При получении такого запроса ставится новое
>>>> время для данного ключа.
>>> 
>>> 
>>> Эти ключи как я понимаю, будут формироваться скриптом. Для меня этот 
>>> вариант не подходит, т.к. я хочу макимально избавиться от скриптов. А так 
>>> на каждый запрос скрипт будет вызываться. :(
>> 
>> 
>> Ключи формируются бэкендом.
>
> Тогда не понял. Бэкенд это апачь. Откуда он будет брать нужные значения 
> ключей? Кроме того, как он их будет формировать, если при генерации страници 
> неизвестно когда потребуется ее опять сгенерировать (т.е. когда обновяться 
> данные)?

Ключи берутся оттуда же, откуда предполагается брать спец.файлы, с помощью
которых проверяется правильность ответов. Ключ можно формировать так же,
как предполагается формировать имена этих файлов. Ключ - это не время
кэширования. Это просто ключ. У него есть время его обновления. А сам ключ
неизменен.


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list