Где применять кеширование?

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)
Спасибо всемsmile вантуз, а как ты организовал кеширование статусов?

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нял smile 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)
Не хочу плодить новую темку... Спрошу тут smile
Подскажите грамотный метод кеширования (с примером, если можно). Спасибо заранее smile

29. Олег (23.06.2010 / 22:24)
sanzstez, в целом я уже описал методику, реализовать програмно это несложно. Пример выйдет великоват. Я как-нибудь выложу, возможно, готовый вариант, но явно не сейчас. Еще очень хороший вариант использовать memory кеш MySQL. Правда на обычном хостинге это не всегда разрешено

30. Саня (23.06.2010 / 22:29)
Может в блоге на визави опишешь? Думаю не я один +сегом отблагодарю smile

31. Олег (24.06.2010 / 11:02)
Хорошо, в ближайшее время подготовлю, пока что я в командировке

URL: https://visavi.net/topics/10441