Как лучше закешировать?

Статус
В этой теме нельзя размещать новые ответы.

new_forward

Профессор
Регистрация
5 Май 2008
Сообщения
673
Реакции
44
Доброго времени суток!

Сделал страницу с одним запросом и вывожу ее как информер :
Код:
if($_GET['lim'] != ''){
$lim = $_GET['lim'];
} else {
$lim = 4;	
}
if($_GET['blank'] != 0){
$target = '_blank';	
} else {
$target = '_self';	
}
$query="select * FROM pro_films ORDER BY RAND() LIMIT 0, $lim";
$result=mysql_query($query);

//----------------------------выводим таблицу--------------------------
print"document.write(\"<center><div class='box box-grid events-top'><table width='100%' border='0' cellspacing='3' cellpadding='0'>\");";
$i=0;
while ($res = mysql_fetch_object($result)){


print"document.write(\"<td><a target = '".$target."' class='tip-bottom item' href='http://www.mysite.net/dating/kino.php'><img src='http://mysite.net".$res->mini_img."' align='left' width='165' height='97' border='none'><span class='dt opacity'>".$res->period."</span><span class='tt opacity'>".$res->title."</span></a></td>\");";


$i++;
}
 
print"document.write(\"  </table></div></center>\");";

И подключаю этот информер к другим сайтам вот так:

<script src="http://mysite.net/partnerka/new_kino.php?lim=5&amp;blank=0" type="text/javascript" language="javascript">
</script>

Все работает но возросла нагрузка на базу от куда информер берет данные....

Подскажите пожалуйста как лучше его закешировать потому как этому файлу еще передаются через GET параметры лимит вывода и открывать или не открывать в новом окне : new_kino.php?lim=5&amp;blank=0
 
lim масимально сколько? есть какие-нибудь рамки?
 
Вообще нет но я ставлю лимит 5
 
сделай отдельную htmlку которая будет обновляться cron заданием по определенному времени, это будет лучший вариант

cron запускае php или еще что, чтобы сгенерить html с данными, и этот файл ты скармливаешь уже кому нада, чтобы не перебивать везде линки, сделай просто при запросе старой ссылки тупо инклуд той htmlки а другой код убери
 
Он передаёт параметры get, создать нужно будет несколько записейс cron


Гениально простое решение.

 
Нужно избавится от RAND().

Как вариант:
в делаешь выборку с базы всех записей допустим по id, а потом рандамно выбираешь id через масив.
после этого берешь свой масив с базы и ложешь его в мемкеш на 5 мин.
потом при выводе делай проверку на присутствие в мемкеше твоих данных.
 
Спасибо всем!

Воспользовался кешированием MySQL замечательно работает...даже с RAND()

 
я тоже ранее использовал этот класс.
Но есть одно проблема.

С увеличением запросов растет количество файлов,
и возникают некие тормоза в связи с количеством файлов, тк. они не удаляются!

Вместо этого лучше уже в мемкеш результат ложить даже после RAND().
Тем более от этого зависит скорость загрузки твоей страницы.
 
Дело в то что у меня стоит джумла 1.0 на ней много компонентов поставил на нее компонент QCache думал он увидит установленный на хостинге XCache, нет не видит не понятно почему Пришлось воспользоваться JRECache, а этот класс которым я воспользовался мне нужен для кеширования запросов информеров их не так уж много...Memcached на хостинге не установлен :(
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху