На страницах этого блога уже было описано применение технологии memcache для кеширования веб страниц целиком. действительно, это очень удобная технология позволяет делать это очень быстро и надежно, при этом нет необходимости держать огромную папку закешированного содержимого. Все лежит в оперативной памяти.

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

В этой статье я расскажу, как закешировать sql запросы к базе данных. 

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

mysql_query('select * from tablename')

всегда есть некая прослойка. Если ее нет, то ее не сложно написать. В этой статье я буду ускорять CMS Joomla и при этом буду использовать свою   прослойку uno, которая в свою очередь является прослойкой над Joomla прослойкой над PDO интерфейсом. Вот такие хитросплетения. 

В uno есть несколько методов для выборки данных: getRows,getRows,count, getRowsBySQL,exists,getRowsBySQL

Вот их и нужно кешировать. Для этого в каждый метод, необходимо добавить параметр: $usecache = false. Далее, напишу, как это работает на примере только getRow. Предполагается, что у вас уже есть класс для работы с memcahe

static public function getRow($table,$conditions=false,$colums=array('*'),$order = false,$offset = 0, $usecache = false){
	$key = md5(serialize(array($table,$conditions,$colums,$order,$offset)));
	if( $usecache and $result = mem::gi()->get($key))
		return $result;
	$result = self::query($table,$conditions,$colums,$order,1,$offset)->loadAssoc();
	if( $usecache!==false ){
		mem::gi()->set($key,$result,$usecache);
	}	
	return $result;
}

 При использовании метода, в параметр   $usecache, нужно подать количество секунд для хранения данных в memcache, по истечении которых, кеш нужно будет обновить. 

В статичных сайтах, этим значением может быть очень больше число. Если сайт создан исключительно для продажи контекстной рекламы Google (Гугл), и представляет собой множество интересных постов, то там можно кешировать и при помощи файлов.   

Но для динамичных порталов, в которых такое кеширование и имеет смысл делать, нужно предусмотреть обновление кеша. 

К примеру, пользователь зарегистрировался. После этого, список ранее закешированных пользователей нужно обновить. Для этого в $usememcache нужно подать 0. Тогда кеш затрется. 

Рассказать друзьям
author.jpg

Платная консультация по вопросам 2500 руб/час

Прочитали статью и остались вопросы? Меня зовут Валерий и я её автор. С радостью объясню Вам в скайпе все затруднительные моменты, которые остались за рамками статьи!

Подробнее ...

Добавить комментарий


Комментарии   

Sfera1
+1 # Sfera1 03.03.2015 00:07
Чудно написано, но только вообще ничего не понятно.
По этому и не нужно.
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
sites.google.com
0 # sites.google.com 25.08.2020 12:09
Terrific article! This is the type of info that are supposed to be
shared around the internet. Shame on the search engines for no longer positioning this post upper!
Come on over and consult with my web site . Thank you =)

My web site :: sites.google.com
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
sites.google.com
0 # sites.google.com 25.08.2020 14:52
Hurrah! At last I got a website from where I be capable of truly obtain helpful facts concerning my study and knowledge.


My website - sites.google.com
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
Togel Hari ini
0 # Togel Hari ini 25.08.2020 18:54
Very energetic article, I loved that bit. Will there be a part 2?



my blog post; Togel Hari ini
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
Judi Online
0 # Judi Online 06.09.2020 23:57
I am redgular reader, how are you everybody?

This piece oof wditing posted at this website is genuinely fastidious.


Woould You My site ... Judi Online
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
togel Online
0 # togel Online 18.09.2020 20:27
Greetings! Ⅴery uѕeful advice іn this particuⅼar article!
It's the little chаnges thɑt will mɑke the largest сhanges.
Tһanks for sharing!

Can Yoᥙ Ꮇy homepage: togel Online
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
http://ayamlive.org
0 # http://ayamlive.org 26.09.2020 15:56
It's impressive that you are getting thoughts
from this article as well as from our argument made here.


Also visit my web site http://ayamlive.org
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
game Slot Online
0 # game Slot Online 08.10.2020 17:50
Ahaa, іts nice conversation conceгning thіs piece of writing at thiѕ place at this web site,
Ι һave read aⅼl that, s᧐ at thіs time mе alsߋ commenting
һere.

Would You Alѕo visit my web ρage ... game
Slot Online
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
Daftar togel
0 # Daftar togel 25.10.2020 05:20
I am sure thiѕ piece of writing haѕ touched ɑll thе internet userѕ, іts
rеally really fastidious post ᧐n building uρ neѡ weblog.


Woᥙld You my web site; Daftar togel
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору