>Одна из самых частых ошибок, это оптимизировать что-либо на основе интуиции/наития/самоуверенности/дебилизма. Одно
>дело когда у вас ферма из десятка однотипных серверов и вы
>хотите добавить туда новый, разогрев его предварительным кешированием. Другое дело, когда
>вы пытаетесь заранее угадать запросы пользователей на единственный сервер. Делать подобное
>не рекомендуется ибо бесполезно.
>
>P.S. Если бы вы доросли до первого варианта, то подобный бы вопрос
>просто не возник. вопрос именно в том - чтобы "разогреть" кэш перед запросами от nginx-а.
почему не воспользоваться бы сразу кэшированием от самого nginx-а или mod_accel? тем, что эти методы не позволяют контролировать кэш, т.е. в случае изменения динамики юзеру будет отдаваться старый контент. и возможности контролировать этот процесс(кэширования) - минимален. а то что лежит в мемкэше - можно и прибить и обновить своими силами (как бэком так и внешними костылями).
на счет "предугадать" то к чему обратится юзер - тут особых заморочек нет в виду аудитории и контента. контент - новости и работа. соответственно - последняя сотня новостей и последние несколько сотен вакансий-резюме.
эти обращения составляют порядка 25-30% загрузки бэков.
почему желание есть делать этот разогрев и контроль "внешними" силами а не допустим скриптами на бэках - это тем, что скрипты нужно дописывать этими функциями, это неизбежные багосы. а в случае внешнего управления кэшем - переписка минимальна, а управление - полное.
про частые ошибки, я не говорю за всех, я про свою ситуацию:
есть документ, допустим /news123.html после его формирования - он запрашивается 20к раз на дню. уточнение(правка этого документа) происходит раза три.
вопрос: зачем его каждый раз генерить на бэке, если его можно закэшировать три раза после изменений? и снизить тем самым количество запросов на бэки на 19997 запросов?
кэширования же сейчас нет ваабще никакова =) планируется последние новости-работу кэшировать в мемкэше и раздавать с фронта, остальное ("старое") кэшировать на фронтах в файлах. базы-бэки нагружать по-минимуму.
переписывать же двигло сайта не предлагать - там всё слишком заморочено. а нагрузка уже есть сейчас и сильно хочет расти =)
не спорю, что можно еще к ферме добавить два-три сервера и оне возьмут какую-то часть нагрузки, но есть желание на существующих мощностях дожать 10-20%. и пусть даже не самым прямым способом.
так вот, к чему это собственно я =) ищецца демон который поймет список урлов(файл или база), список бэков с которых эти урлы схавать, поймёт что нужно это класть в мемкэш, а так же будет иметь возможность по времени и/или же по внешнему запросу (http/rpc?) обновлять урл или урлы. если он будет уметь тэги на урлы и обновлять урлы по запросу тэга - будет ваабще здорово.
но чтото мне подсказывает что придется этот демон заказывать на написать, гугл и яндекс готового ничего не предлагает. поскольку тема кэширования слишком своеобразна и специфична.
сорь за многабукав.