Где применять кеширование?
1.
chiper (12.06.2010 / 23:46)
Вот такой вот вопрос, где его применять? Я вообще не понимаю. Кешировать целые страницы это тупо как бы) где посоветуете применять?
2.
Apeccc (14.06.2010 / 13:22)
В страницах, информация которых масивна и статична..
3.
Azzido (14.06.2010 / 13:25)
http://visavi.net/pages/tegi.php? к примеру здесь
4.
Apeccc (14.06.2010 / 13:29)
3.
Azzido, или в правилах
5.
ктулху (14.06.2010 / 14:48)
В правилах смысла нет... там и так почти голый html в echo "";
Применять нужно в местах где долгое выполнение, например грабберы, счётчики. Вообщем информация которая поддаётся кэшированию, которую нет нужды каждый раз получать (если это сравнительно долго)
6.
Neformat (14.06.2010 / 15:05)
Пример в тему, счетчик общего числа рег на сайте. Десятки тысяч в минуту заходят на главную страницу и каждый раз дергать базу через count? Поэтому кэшируют и обновляют через определенное время.
7.
Azzido (14.06.2010 / 15:27)
Ну если такого рода кэш, кэш запросов. Я имел ввиду конкретно header('Cache-Control: public');
8.
Nu3oN (14.06.2010 / 15:55)
В загруз-центрах удобно! что бы каждый раз не дергать базу, закешировал например список категорий и потом уже выводишь кеш! на форуме список разделов, обновляешь только счетчики допустим раз в час, и выводишь! список новостей, ты ж каждый день не пишешь новые новости! вот закешировал как появилась новая новость, и пусть выводится кеш, что бы постоянно не делать кучу запросов к бд! применении очень много!
9.
Олег (15.06.2010 / 18:49)
Как правило там где запросов больше на выборку чем на изменение/удаление.
Например, статьи, каталоги. Там обычно один раз опубликовали и больше никаких изменений нет. Но при этом нужно поддерживать актуальность за счет использование различных алгоритмов. Если статья обновилось, то и сохраненый кеш следует чистить и записывать новый
10.
ramzes (15.06.2010 / 19:45)
Да в принципе можно кешировать что угодно при условии что это 'что угодно' жрет ресурсов больше чем само кеширование..
11.
Вантуз-мен (16.06.2010 / 00:04)
на visavi.net к примеру в файл кешируются все счетчики которые на главной, вывод рекламы, быстрый переход, настройки сайта, вывод аватаров, статусов, никнэймов, даже браузер и IP а также счетчики внизу
На сайте: 23/49
4651 | 90320
12.
Саня (16.06.2010 / 00:49)
статус онлайн я так понял тоже кешируется так как иногда если заходишь на сайт, и как видишь свой пост на форуме, то можно увидеть офф вместо On
13.
chiper (20.06.2010 / 23:22)
Спасибо всем
вантуз, а как ты организовал кеширование статусов?
14.
Вантуз-мен (20.06.2010 / 23:42)
13.
ChipеR_есть чо7,
<?
function user_title($login) {
static $arrstat;
if (empty($arrstat)){
if (filemtime(DATADIR."temp/status.dat")<time()-3600){
$querylevel = DB::$dbh->query("SELECT `users`.`users_login`, `users`.`users_status`, `status`.`status_name`, `status`.`status_color`
FROM `users`, `status` WHERE `users`.`users_point` BETWEEN `status`.`status_topoint` AND `status`.`status_point`;");
$allstat = array();
while ($row = $querylevel->fetch()) {
if (!empty($row['users_status'])) {
$allstat[$row['users_login']] = '<span style="color:#ff0000">'.$row['users_status'].'</span>';
continue;
}
if (!empty($row['status_color'])) {
$allstat[$row['users_login']] = '<span style="color:'.$row['status_color'].'">'.$row['status_name'].'</span>';
continue;
}
$allstat[$row['users_login']] = $row['status_name'];
}
file_put_contents(DATADIR."temp/status.dat", serialize($allstat), LOCK_EX);
}
$arrstat = unserialize(file_get_contents(DATADIR."temp/status.dat"));
}
if (isset($arrstat[$login])) {$status = $arrstat[$login];} else {$status = 'Дух';}
return $status;
}
15.
Nu3oN (20.06.2010 / 23:42)
sanzstez (16.06.10 / 00:49)
статус онлайн я так понял тоже кешируется так как иногда если заходишь на сайт, и как видишь свой пост на форуме, то можно увидеть офф вместо On
это не кеш...
я так понимаю просто стоит такая логика
if (time() > ($user_time+60*2)):
обновляем время последнего клика
endif;
16.
ramzes (20.06.2010 / 23:53)
14, как то не логично. Ты пишешь данные в файл, потом из этого же файла читаешь. Зачем из файла читать если данные уже получены?
17.
Вантуз-мен (21.06.2010 / 00:02)
16.
ramzes, смотри внимательнее, сперва все вычисления заносятся в файл там проверяется уникальный статус и есть ли цвет у обычного статуса, и потом запросов к базе уже нет в течении часа
Также весь массив держится в статистической переменной при обращении в цикле запрос к файлу всего один, а переменная в памяти
18.
Олег (21.06.2010 / 00:39)
Vantuz, ты во всех проектах используешь операцию с запятой? (вопрос, чисто, интересующийся)
19.
Вантуз-мен (21.06.2010 / 00:44)
какую еще запятую? не понял
20.
Олег (21.06.2010 / 00:53)
FROM `users`, `status`
Имею ввиду аналог объединение JOIN (стандарт SQL 95/99)
21.
Вантуз-мен (21.06.2010 / 01:30)
нет, применяю и join
22.
Мakcим (21.06.2010 / 02:36)
Kcтaти o keшиpoвaнии. A чeм плoxo keшиpoвaниe cтpaниц? Чacтo в ckpиптax вcтpeчaл зaгoлoвkи зaпpeтa kэшa, иx 4 вpoдe. Нa caйтe нe вce cтpaницы динaмичныe жe
23.
Олег (21.06.2010 / 03:24)
Это несколько другое кеширование. Тоесть в твоем случае, эти заголовки сообщают браузеру о запрете кеширование. Тут речь о кешировании страниц на сервере с целью снизить кол-во запросов к БД.
24.
Мakcим (23.06.2010 / 11:31)
23.
Aligan, я пoнял
a вoт зa зaгoлoвkи. Пpи нaжaтии нa kнoпkу ,,нaзaд,, дoпуcтим cтpaницa eщe paз гpузитcя. Toт жe зaпpoc k бaзe
25.
Мakcим (23.06.2010 / 11:33)
Нa тeлeфoнe oщутимo быcтpoдeйcтвиe. Ocoбeннo koгдa нaзaд paз 5 пepeйдeш
26.
Олег (23.06.2010 / 12:07)
NightStalker, скрипту неважно сколько раз нажал ты кнопку назад. Алгоритм кеширование на сервере заключается в том что сервер определяет устарел ли кеш без участия киента. Например, если упрвления сайтом осущестляется через административную панель, то можно в админке реализовать модуль, котрый отвечает за актуальность кеша. Например, кеш страницы хранится в директории casche, где название файла определенной страницы именуется захешированным адресом страницы (при помощи md5,например). При редактировании, удалении страницы в админке соответсвенно удаляем кеш из директории кеша.
Теперь, когда пользователь обратится к соответсвующей странице, на основе алгоритма система обращается в первую очередь к кешу,и выявляет сущетсвует ли там кеш данной страницы, в случае да, берет из кеша, в случае нет, обращается к БД и берет актуальные данные оттуда, соответственно выдает их пользователю, и также обновляет кеш.
Такой алгоритм приемлем для статей, блога. Для форумов не очень, так как там присутсвуют INSERT - запросы
27.
Мakcим (23.06.2010 / 14:17)
26.
Aligan, яcнo, пoнял
28.
Саня (23.06.2010 / 22:05)
Не хочу плодить новую темку... Спрошу тут
Подскажите грамотный метод кеширования (с примером, если можно). Спасибо заранее
29.
Олег (23.06.2010 / 22:24)
sanzstez, в целом я уже описал методику, реализовать програмно это несложно. Пример выйдет великоват. Я как-нибудь выложу, возможно, готовый вариант, но явно не сейчас. Еще очень хороший вариант использовать memory кеш MySQL. Правда на обычном хостинге это не всегда разрешено
30.
Саня (23.06.2010 / 22:29)
Может в блоге на визави опишешь? Думаю не я один +сегом отблагодарю
31.
Олег (24.06.2010 / 11:02)
Хорошо, в ближайшее время подготовлю, пока что я в командировке
URL:
https://visavi.net/topics/10441