Кэширование

123
_savit
На сайте с 19.03.2006
Offline
135
#11
VipRaskrutka:
Я выбрал бы второй вариант. Не думаю что дизайн придется так часто менять.

сам дизайн нет, но например код партнерок довольно часто меняю (тестю) и каждый раз надо чистить весь кэш ...

https://vk-botovod.ru - комбайн ВКонтакте, мультимессенджер, эмулятор жизни аккаунтов
Ayavryk
На сайте с 11.10.2003
Offline
209
#12
_savit:
Плюсы: дизайн никак не завязан на кэшировании т.е если завтра я захочу добавить какой-то элемент, то не придется очищать кэш для нескольких тысяч страниц

Первый раз встречаю задачу в которой разработчик связывает время кэширование со скоростью изменения дизайна. М.б. вы не с того боку заходите?

_savit:
сам дизайн нет, но например код партнерок довольно часто меняю (тестю) и каждый раз надо чистить весь кэш ...

Ну так и кэшируйте всю страницу целиком без кода партнерки. А парнерку - отдельным кодом.

Тынгыр, мынгыр, комсомол (http://erum.ru). Ехари, ехари, (жалобно) аяврик. /народная тунгусская песня/
bbon
На сайте с 01.04.2006
Offline
127
#13
_savit:
чистить кэш по крону имхо не самое удачное решение! гораздо проще при каждой обращении к странице смотреть на возраст файла с кэшем ... если просрочен, то обновлять

если к странице обращений больше не случится, то мусор в кеше будет храниться вечно 🚬

[Удален]
#14
_savit:
сам дизайн нет, но например код партнерок довольно часто меняю (тестю) и каждый раз надо чистить весь кэш ...

Бред,


foreach (glob("/home/site.ru/cache/*.tmp") as $filename) { @unlink($filename); }
header("Location: http://www.site.ru");

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

_savit
На сайте с 19.03.2006
Offline
135
#15
Ayavryk:
Первый раз встречаю задачу в которой разработчик связывает время кэширование со скоростью изменения дизайна.

ну так как свои сайты я полностью обслуживаю сам, то хочется учесть все возможные плюсы и минусы :)

Ufaweb
На сайте с 03.03.2008
Offline
182
#16

Кэшируйте только готовый контент. А его уже впихивайте в шаблон.

M
На сайте с 19.09.2007
Offline
112
#17
_savit:
чистить кэш по крону имхо не самое удачное решение! гораздо проще при каждой обращении к странице смотреть на возраст файла с кэшем ... если просрочен, то обновлять

вот это точно не оптимальное решение и на хорошей посещаемости эта машина уйдет сначала в LA, потом в нирвану, потом ТС напишет "Пацаны, кеш это зло" :)

кеш нужно проверять не чаще, чем это требует заача!

более того, есть мелкий момент такой ... некоторые личности перед открытием файла кеша типа open(filename) делают еще и предварительно ifexist, что не просто зло на хорошей посещаемости, а просто вредительство ...

там кто-то выше правильно отписал на предмет "мусуль кешит" - есть у меня пара проектов с посещаемостью 30К уников. файловый кеш работал хуже, чем мускуль. так-что все индивидуально.

ТСу я бы посоветовал просто попробовать все преоженые варианты.

и выбрать тот который больше всего ему по его конкретные условия подхоит.

на слабой тачке мускуль будет себя хуже вести чем файловый кеш, на мощной железяке - наоборот.

E
На сайте с 14.09.2007
Offline
24
#18

Внесу и свою лепту чуток :)

Есть еще такой подход: обновлять кеш именно тогда, когда

это необходимо.

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

Например, на сайте есть раздел "новости", "форум", "каталог товаров". На главной странице показывается лента новостей, рубрикатор товаров и статический (неизменяемый) контент, а по всему сайту сквозняком блоки "новости", "свежие темы с форумов".

Тогда при кешировании страниц сайта вводим следующие соответствия (страница - теги):

Главная страница - news, rubrics

Страницы рубрикатора товаров - news, rubrics, forum

Страница конкретного товара (id: 234) - news, forum, tovar234

Задача по управлению кешированием заключается в реализации алгоритма: при добавлении новости очистить кеш от всех страниц с тегом news, при изменении рубрикатора - страницы с тегом rubrics, при изменениях информации о товаре id: 234 - tovar234

Это в теории :)

На практике все это выливается в многомерную структуру кеша и сложность реализации, изложенного алгоритма: зашивать управление кешем в каждый модуль (новости, форум, каталог товаров) недальновидно с т.з. гибкости архитектуры, т.е., если хотим получить универсальное решение, надо выносить управление кешем на уровень "обертки". Работаю с j2ee - здесь данный подход реализуется навешиванием кеширующего фильтра и фильтра, управляющего кешем на основе заданных правил (что тоже не всегда просто), либо с помощью АОП. Как это сделать на других платформах, не знаю.

Из плюсов: пользователь всегда видит "свежий" контент, т.е. применение алгоритма оправдано тогда, когда "кровь из носа" нужно отдавать актуальную информацию.

DyaDya
На сайте с 11.04.2007
Offline
147
#19

В принципе, неплохие идейки уже по кэшу подкинули... ;)

Думаю, самое время подумать и о тяжеловесных запросах? В чём их тяжеловесность? в количестве записей в результате? или во времени выполнения? или и в том и другом?

Без хорошей оптимизации SQL запросов к БД в нагруженных системах делать нечего. Вплоть до того, что приходится создавать таблицы с избыточными данными, лишь бы выборка была быстрее и проще.

Простой пример, если вам часто приходится делать выборку из таблицы, в которой достаточно много записей и требуется сортировка выборки, например по названию. А сортировка как известно, очень хорошо грузит базу... То по крону или уж ещё как, можно подготавливать точно такую же таблицу но с уже отсортированными данными! Тогда при выборке ничего сортировать уже не нужно будет. Выигрыш офигительный. Пользовался таким подходом не однократно. Ну а в кипе с кешированием файлов хуже стать не должно ;)

Выбирайте качественный хостинг (http://vashmaster.ru/informaciya/o_poleznyh_programmah/news83.php) и продвигайте сайты в СЕОПУЛЬТ (http://seopult.ru/ref.php?ref=72b5ed9561fe66a1). А на «SAPE» я в обиде :) Не упрекайте за очепятки, пишу вслепую (http://ergosolo.ru/) и также делаю сайты (http://www.vashmaster.ru/) ;)
T.R.O.N
На сайте с 18.05.2004
Offline
314
#20

А почему речь идет тольок о "линейной" обработке кеша? Очень часто нет необходимомости отображать результаты на сайте, сразу после обновления информации.

Можно сделать бемона, который каждые 12 часов пересчитывает весь кеш (присловутый апдейт, как у яши...). Запуск программы по таймеру.

Кроме этого, можно подготовить выборки из базы, которые чаще всего необходимы и сложить в виде результата.

От воздержания пока никто не умер. Хотя никто и не родился! Prototype.js был написан теми, кто не знает JavaScript, для тех, кто не знает JavaScript (Richard Cornford)
123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий