На страницах этого блога уже было описано применение технологии 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
Чудно написано, но только вообще ничего не понятно.
По этому и не нужно.
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
gilabet88 joker123
0 # gilabet88 joker123 10.03.2021 19:15
Thanks fօr sharіng yοur thoughts on nosql. Regards

Haaѵe a look at my web page; ɡilabet88 jоker123
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
ayamonline.org
0 # ayamonline.org 11.03.2021 12:18
Howdy! I'm at work browsing your blog from my new iphone 3gs!
Just wanted to say I love reading through your blog and look forward to all your posts!
Carry on the excellent work!

Here is my site ... ayamonline.org
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
slot deposit pulsa
0 # slot deposit pulsa 27.03.2021 19:11
Whoa! This blog looks just like my old one! It's on a entirely
different subject but it has pretty much the same layout
and design. Outstanding choice of colors!

Feel free to surf to my site :: slot deposit pulsa
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
deposit s128
0 # deposit s128 27.03.2021 23:51
Excellent website. A lot of useful info here. I am sending
it to a few pals ans additionally sharing in delicious. And certainly,
thanks on your sweat!

Look into my web page: deposit s128
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
agen poker online
0 # agen poker online 28.03.2021 14:58
Its like you read my mind! You seem to know a lot about this, like you wrote the book in it or something.
I think that you can do with some pics to drive the message home a bit, but instead of that,
this is excellent blog. A great read. I'll definitely be back.


Here is my blog post :: agen poker online
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
poker deposit pulsa
0 # poker deposit pulsa 28.03.2021 22:09
Do you have a spam issue on this website; I also am
a blogger, and I was wanting to know your situation; many of us have created some nice procedures
and we are looking to trade techniques with others, be sure to shoot me an email if interested.


My blog: poker
deposit pulsa
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
slot idn via pulsa
0 # slot idn via pulsa 29.03.2021 03:36
Hello, i believe that i saw you visited my
blog thus i came to go back the prefer?.I am attempting to
to find things to enhance my site!I guess its adequate
to use some of your concepts!!

my web blog: slot idn via pulsa
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
pokerpulsa77.xyz
0 # pokerpulsa77.xyz 29.03.2021 06:47
You ought to be a part of a contest for one of the best blogs on the
net. I most certainly will recommend this site!

My blog :: pokerpulsa77.xyz
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
pokerpulsa188.xyz
0 # pokerpulsa188.xyz 30.03.2021 01:11
Your way of describing the whole thing in this piece of writing is genuinely
nice, all be capable of simply know it, Thanks a lot.

Review my web-site pokerpulsa188.xyz
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
ayamsabung.co
0 # ayamsabung.co 30.03.2021 01:47
What's up everyone, it's my first pay a visit at this web site, and article is actually fruitful for me,
keep up posting these content.

Also visit my web site; ayamsabung.co
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
idn slot
0 # idn slot 30.03.2021 05:04
I'm gone to tell my little brother, that he should also pay a quick
visit this web site on regular basis to get updated from most up-to-date news.


Here is my website :: idn slot
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
bokep indonesia
0 # bokep indonesia 30.03.2021 07:58
I am now not certain where you are getting your information, but
good topic. I must spend some time finding
out much more or working out more. Thanks for excellent information I was on the lookout for this info for my
mission.

Review my site: bokep indonesia
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору