Подскажите (разъясните) насчет этого.
Допустим есть база на десятки и больше тысяч записей. Генерация, мягко говоря, не радует. Хотелось бы закешировать результаты вывода.
Но.. Как это реализовать? Знаю что нужно записывать результат в файл и далее читать его. Смущают некоторые моменты, например, количество элементов на страницу мб разное, возможна сортировка...
П.С. В тоже время желательно обойтись без объемного кода
<?
// считываем файл из кэша
$d=@file("/tmp/news.cache");
$fs=trim($d[1]);
// Если файл не обновлялся 3600 секунд (1 час) или файл пуст,
// то обновляем его
if (intval($d[0])<time()-600 || empty($fs)) {
$d=@file("http://news.novgorod.ru/ultramode.txt");
$fs=trim($d[1]);
// Сохраняем новую версю в кэше
if (!empty($fs)) {
$fw=fopen("/tmp/news.cache","wt");
flock($fw, LOCK_EX);
// В первую строку запишем текущее время
fputs($fw,time()."\n");
// Сохраним остальные строки
for ($i=1;$i<count($d);$i++) fputs($fw,trim($d[$i])."\n");
fclose($fw);
}
// Если, почему-то, файл не был скачан,
// то воспользуемся кэшированной версией
else $d=@file("/tmp/news.cache");
}
// Вывод данных
for ($i=0;$i<11;$i++) {
$msg=$d[2+$i*8];
$url=$d[3+$i*8];
$date=$d[4+$i*8];
print "<a href='http://news.novgorod.ru".trim($url)."'>";
print trim($msg)."</a> (".$date.")";
}
?>
Простой метод кеширования... Сам в инете вчера искал
Много полезного есть по данному поводу
АртAS, это как бы деревянный способ, есть спец модули и даже сервера кеширования
20 Июл 2010, 5:35Тока использовать кэш там где не нужно, не использовать кэш там где нужно работать с результатами к примеру сортировать,искать или как то работать с результатом
20 Июл 2010, 6:33Мдо.. У меня пока одно решение - для каждой сортировки, разного количества создавать файлы
Подождем знающих)
НЕЗНАЙКА, если хочеш вытащить все записи и в кеш, то вывод этих данных будет такая же, может надо искать узкие места в других дебрях?
20 Июл 2010, 7:58Возможно. Ключи для таблицы установлены - уже плюс)
Select - Запрос стандартный, обычная выборка
Так что, хз, это еще без подсчета (для категорий)