<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Комментарии: Кэширование и memcached</title>
	<atom:link href="http://www.smira.ru/2008/10/16/web-caching-memcached-1/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.smira.ru/2008/10/16/web-caching-memcached-1/</link>
	<description></description>
	<lastBuildDate>Thu, 13 Jan 2011 15:03:38 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>Автор: Дмитрий</title>
		<link>http://www.smira.ru/2008/10/16/web-caching-memcached-1/comment-page-1/#comment-1077</link>
		<dc:creator>Дмитрий</dc:creator>
		<pubDate>Fri, 04 Jun 2010 07:55:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.smira.ru/?p=98#comment-1077</guid>
		<description>&lt;p&gt;Cпасибо, будем разбираться...&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Cпасибо, будем разбираться&#8230;</p>]]></content:encoded>
	</item>
	<item>
		<title>Автор: Андрей</title>
		<link>http://www.smira.ru/2008/10/16/web-caching-memcached-1/comment-page-1/#comment-1076</link>
		<dc:creator>Андрей</dc:creator>
		<pubDate>Thu, 03 Jun 2010 19:15:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.smira.ru/?p=98#comment-1076</guid>
		<description>&lt;p&gt;Да, конечно, можно получить. Мы делали свой обработчик сессии в memcached, тогда все становится совершенно прозрачно:&lt;/p&gt;

&lt;pre lang=&quot;php&quot;&gt;
function mmsh_ses_open($path, $name)
{
}

function mmsh_ses_close()
{
    if (!$GLOBALS[&#039;__mmsh_id&#039;])
        return;
    $expire = time() + $GLOBALS[&#039;site_config&#039;][&#039;session_lifetime&#039;];
    CMemcache::instance()-&gt;set(mmsh_get_id($GLOBALS[&#039;__mmsh_id&#039;]), $GLOBALS[&#039;__mmsh_session&#039;], 0, $expire);
}

function mmsh_ses_read($id)
{
    $data = CMemcache::instance()-&gt;get(mmsh_get_id($id));
    $GLOBALS[&#039;__mmsh_session&#039;] = $data;
    $GLOBALS[&#039;__mmsh_id&#039;] = $id;
    return $data;
}

function mmsh_ses_write($id, $data)
{
    $GLOBALS[&#039;__mmsh_session&#039;] = $data;
    $GLOBALS[&#039;__mmsh_id&#039;] = $id;
}

function mmsh_ses_destroy($id)
{
    CMemcache::instance()-&gt;delete(mmsh_get_id($id));
    unset($GLOBALS[&#039;__mmsh_session&#039;]);
    unset($GLOBALS[&#039;__mmsh_id&#039;]);
}

function mmsh_get_id($id)
{
    return $id;
}

function mmsh_ses_gc($maxlt)
{
    // garbage collection is done on the memcached server, no need to do it here...
}

function mmsh_bind()
{
    if ($GLOBALS[&#039;use_mmsh&#039;] &#124;&#124; !$GLOBALS[&#039;development_environment&#039;])
    {
        assert(session_set_save_handler(&#039;mmsh_ses_open&#039;, &#039;mmsh_ses_close&#039; , &#039;mmsh_ses_read&#039;, &#039;mmsh_ses_write&#039;, &#039;mmsh_ses_destroy&#039;, &#039;mmsh_ses_gc&#039;));
    }
}

mmsh_bind();
&lt;/pre&gt;
</description>
		<content:encoded><![CDATA[<p>Да, конечно, можно получить. Мы делали свой обработчик сессии в memcached, тогда все становится совершенно прозрачно:</p>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> mmsh_ses_open<span style="color: #009900;">&#40;</span><span style="color: #000088;">$path</span><span style="color: #339933;">,</span> <span style="color: #000088;">$name</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> mmsh_ses_close<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$GLOBALS</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'__mmsh_id'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #b1b100;">return</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$expire</span> <span style="color: #339933;">=</span> <span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$GLOBALS</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'site_config'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'session_lifetime'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    CMemcache<span style="color: #339933;">::</span><span style="color: #004000;">instance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>set<span style="color: #009900;">&#40;</span>mmsh_get_id<span style="color: #009900;">&#40;</span><span style="color: #000088;">$GLOBALS</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'__mmsh_id'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$GLOBALS</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'__mmsh_session'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #000088;">$expire</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> mmsh_ses_read<span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> CMemcache<span style="color: #339933;">::</span><span style="color: #004000;">instance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>get<span style="color: #009900;">&#40;</span>mmsh_get_id<span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$GLOBALS</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'__mmsh_session'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$GLOBALS</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'__mmsh_id'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$id</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$data</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> mmsh_ses_write<span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #339933;">,</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$GLOBALS</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'__mmsh_session'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$data</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$GLOBALS</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'__mmsh_id'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$id</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> mmsh_ses_destroy<span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    CMemcache<span style="color: #339933;">::</span><span style="color: #004000;">instance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>delete<span style="color: #009900;">&#40;</span>mmsh_get_id<span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$GLOBALS</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'__mmsh_session'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$GLOBALS</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'__mmsh_id'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> mmsh_get_id<span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$id</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> mmsh_ses_gc<span style="color: #009900;">&#40;</span><span style="color: #000088;">$maxlt</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// garbage collection is done on the memcached server, no need to do it here...</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> mmsh_bind<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$GLOBALS</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'use_mmsh'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">||</span> <span style="color: #339933;">!</span><span style="color: #000088;">$GLOBALS</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'development_environment'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">assert</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">session_set_save_handler</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mmsh_ses_open'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'mmsh_ses_close'</span> <span style="color: #339933;">,</span> <span style="color: #0000ff;">'mmsh_ses_read'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'mmsh_ses_write'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'mmsh_ses_destroy'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'mmsh_ses_gc'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
mmsh_bind<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Дмитрий</title>
		<link>http://www.smira.ru/2008/10/16/web-caching-memcached-1/comment-page-1/#comment-1074</link>
		<dc:creator>Дмитрий</dc:creator>
		<pubDate>Tue, 01 Jun 2010 15:05:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.smira.ru/?p=98#comment-1074</guid>
		<description>&lt;p&gt;Андрей, просвяти пожалуйста, насколько я знаю сессии в memcached как и все остальные данные имеют свои ключи... Можно ли обратится к переменной сесси обходя стандартный механизм PHP, тоесть зная идентификатор сесси и имя переменной получить или изменить её значение стандартными функциями get/set? Например get(&#039;h4fv68g46azt846d421g5f4dyhn98h54.name&#039;) и т д. Объясняю для чего мне это нужно... Дело в том, что когда пользователь авторизирован в его личном блоке отображается некая персональная информация и его статистика на которую могут повлиять и другие пользователи... Но позволять левым мордам лесть в чужие сесси для того чтобы подогреть значения переменных  - неприемлимо, так как стандартная функция session_start() сразу же засветит SID...&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Андрей, просвяти пожалуйста, насколько я знаю сессии в memcached как и все остальные данные имеют свои ключи&#8230; Можно ли обратится к переменной сесси обходя стандартный механизм PHP, тоесть зная идентификатор сесси и имя переменной получить или изменить её значение стандартными функциями get/set? Например get(&#8216;h4fv68g46azt846d421g5f4dyhn98h54.name&#8217;) и т д. Объясняю для чего мне это нужно&#8230; Дело в том, что когда пользователь авторизирован в его личном блоке отображается некая персональная информация и его статистика на которую могут повлиять и другие пользователи&#8230; Но позволять левым мордам лесть в чужие сесси для того чтобы подогреть значения переменных  &#8211; неприемлимо, так как стандартная функция session_start() сразу же засветит SID&#8230;</p>]]></content:encoded>
	</item>
	<item>
		<title>Автор: Андрей</title>
		<link>http://www.smira.ru/2008/10/16/web-caching-memcached-1/comment-page-1/#comment-1060</link>
		<dc:creator>Андрей</dc:creator>
		<pubDate>Mon, 01 Mar 2010 11:25:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.smira.ru/?p=98#comment-1060</guid>
		<description>&lt;p&gt;Кирилл, давно уже не писал на PHP, но он должен сделать правильный multi-get, в том числе и для кластера серверов (http://ru.php.net/manual/en/function.memcache-get.php).&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Кирилл, давно уже не писал на PHP, но он должен сделать правильный multi-get, в том числе и для кластера серверов (<a href="http://ru.php.net/manual/en/function.memcache-get.php" rel="nofollow">http://ru.php.net/manual/en/function.memcache-get.php</a>).</p>]]></content:encoded>
	</item>
	<item>
		<title>Автор: Кирилл</title>
		<link>http://www.smira.ru/2008/10/16/web-caching-memcached-1/comment-page-1/#comment-1059</link>
		<dc:creator>Кирилл</dc:creator>
		<pubDate>Mon, 01 Mar 2010 11:22:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.smira.ru/?p=98#comment-1059</guid>
		<description>&lt;p&gt;Нашел, позволю себе вот такую ссылочку...
http://highload.com.ua/index.php/2009/08/05/memcache-multi-get-%D0%B7%D0%B0%D1%87%D0%B5%D0%BC/&lt;/p&gt;

&lt;p&gt;Очень полезная информация по мультигету и особенности работы с ним&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Нашел, позволю себе вот такую ссылочку&#8230;
<a href="http://highload.com.ua/index.php/2009/08/05/memcache-multi-get-%D0%B7%D0%B0%D1%87%D0%B5%D0%BC/" rel="nofollow">http://highload.com.ua/index.php/2009/08/05/memcache-multi-get-%D0%B7%D0%B0%D1%87%D0%B5%D0%BC/</a></p>

<p>Очень полезная информация по мультигету и особенности работы с ним</p>]]></content:encoded>
	</item>
	<item>
		<title>Автор: Кирилл</title>
		<link>http://www.smira.ru/2008/10/16/web-caching-memcached-1/comment-page-1/#comment-1058</link>
		<dc:creator>Кирилл</dc:creator>
		<pubDate>Mon, 01 Mar 2010 10:34:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.smira.ru/?p=98#comment-1058</guid>
		<description>&lt;p&gt;Андрей, я так понимаю, что multi-get реализуется просто передачей в get метод не одного ключа, а массива ключей. &lt;/p&gt;

&lt;p&gt;А как это работает физически? Не получится ли так, что, php&#039;шный api деает это всё через банальный foreach? Или он формирует набор команд и выполняет их через один запрос?&lt;/p&gt;

&lt;p&gt;Заранее Спасибо!&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Андрей, я так понимаю, что multi-get реализуется просто передачей в get метод не одного ключа, а массива ключей. </p>

<p>А как это работает физически? Не получится ли так, что, php&#8217;шный api деает это всё через банальный foreach? Или он формирует набор команд и выполняет их через один запрос?</p>

<p>Заранее Спасибо!</p>]]></content:encoded>
	</item>
	<item>
		<title>Автор: Андрей</title>
		<link>http://www.smira.ru/2008/10/16/web-caching-memcached-1/comment-page-1/#comment-1057</link>
		<dc:creator>Андрей</dc:creator>
		<pubDate>Mon, 01 Mar 2010 05:31:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.smira.ru/?p=98#comment-1057</guid>
		<description>&lt;p&gt;Кирилл, конечно у memcached есть запросы вида multi-get, с помощью которых вы можете запросить за один запрос много ключей.&lt;/p&gt;

&lt;p&gt;Однако чаще всего в одном ключе сохраняют не отдельные новости, а готовые выборки. Инвалидация идет с помощью различных механизмов, например, описанного далее тэгирования. Если беспокоит частая инвалидация кэша - посчитайте сколько проходит запросов на чтение из кэша (запросов страницы) между инвалидациями - это и будет коэффициент оправданности кэширования. Для любого начиная с 1:100 я бы кэш использовал.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Кирилл, конечно у memcached есть запросы вида multi-get, с помощью которых вы можете запросить за один запрос много ключей.</p>

<p>Однако чаще всего в одном ключе сохраняют не отдельные новости, а готовые выборки. Инвалидация идет с помощью различных механизмов, например, описанного далее тэгирования. Если беспокоит частая инвалидация кэша &#8211; посчитайте сколько проходит запросов на чтение из кэша (запросов страницы) между инвалидациями &#8211; это и будет коэффициент оправданности кэширования. Для любого начиная с 1:100 я бы кэш использовал.</p>]]></content:encoded>
	</item>
	<item>
		<title>Автор: Кирилл</title>
		<link>http://www.smira.ru/2008/10/16/web-caching-memcached-1/comment-page-1/#comment-1052</link>
		<dc:creator>Кирилл</dc:creator>
		<pubDate>Sat, 27 Feb 2010 17:02:37 +0000</pubDate>
		<guid isPermaLink="false">http://www.smira.ru/?p=98#comment-1052</guid>
		<description>&lt;p&gt;Андрей, подскажите пожалуйста как быть...&lt;/p&gt;

&lt;p&gt;Есть веб-страница. На странице размещено 200 кратких описаний различных новостей. В одном мемкэш-ключе я храню в список идентификаторов новостей; в других ключах я храню данные о новостях.&lt;/p&gt;

&lt;p&gt;Таким образом, чтобы &quot;собрать&quot; страницу - приходится делать 200+1 запрос к мемкэшу. Разумеется, потом я эту страницу кэширую еще на одном слое - файловой системе или в том же мемкэше.&lt;/p&gt;

&lt;p&gt;Подскажите пожалуйста - такое кол-во запросов к мемкэшу это нормально или нет? Как избежать такой ситуации, при этом не теряя в гибкости инвалидации данных.&lt;/p&gt;

&lt;p&gt;Очень надеюсь на ответ.&lt;/p&gt;

&lt;p&gt;Спасибо.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Андрей, подскажите пожалуйста как быть&#8230;</p>

<p>Есть веб-страница. На странице размещено 200 кратких описаний различных новостей. В одном мемкэш-ключе я храню в список идентификаторов новостей; в других ключах я храню данные о новостях.</p>

<p>Таким образом, чтобы &laquo;собрать&raquo; страницу &#8211; приходится делать 200+1 запрос к мемкэшу. Разумеется, потом я эту страницу кэширую еще на одном слое &#8211; файловой системе или в том же мемкэше.</p>

<p>Подскажите пожалуйста &#8211; такое кол-во запросов к мемкэшу это нормально или нет? Как избежать такой ситуации, при этом не теряя в гибкости инвалидации данных.</p>

<p>Очень надеюсь на ответ.</p>

<p>Спасибо.</p>]]></content:encoded>
	</item>
	<item>
		<title>Автор: Илья</title>
		<link>http://www.smira.ru/2008/10/16/web-caching-memcached-1/comment-page-1/#comment-1044</link>
		<dc:creator>Илья</dc:creator>
		<pubDate>Tue, 15 Dec 2009 18:01:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.smira.ru/?p=98#comment-1044</guid>
		<description>&lt;p&gt;Аха, тоже вариант... спасибо за ответ.&lt;/p&gt;

&lt;p&gt;Да, и отдельное, огромное спасибо за цикл статей про тэгирование кэшей!&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Аха, тоже вариант&#8230; спасибо за ответ.</p>

<p>Да, и отдельное, огромное спасибо за цикл статей про тэгирование кэшей!</p>]]></content:encoded>
	</item>
	<item>
		<title>Автор: Андрей</title>
		<link>http://www.smira.ru/2008/10/16/web-caching-memcached-1/comment-page-1/#comment-1042</link>
		<dc:creator>Андрей</dc:creator>
		<pubDate>Tue, 15 Dec 2009 05:37:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.smira.ru/?p=98#comment-1042</guid>
		<description>&lt;p&gt;Илья, &lt;/p&gt;

&lt;p&gt;Если кэши новостей с тэгами, то, в зависимости от ситуации можно поступить по-разному.&lt;/p&gt;

&lt;p&gt;Например, всем выборкам новостей присваивается тег &quot;новости&quot;, который увеличивается при любом изменении любой новости. Тогда после изменения все выборки автоматически обновятся. Если новости меняются относительно редко, это отличный вариант.&lt;/p&gt;

&lt;p&gt;Если новости меняются очень часто (раз в минуту, например), надо более аккуратно и точно расставить тэги: по разделам, как-то еще.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Илья, </p>

<p>Если кэши новостей с тэгами, то, в зависимости от ситуации можно поступить по-разному.</p>

<p>Например, всем выборкам новостей присваивается тег &laquo;новости&raquo;, который увеличивается при любом изменении любой новости. Тогда после изменения все выборки автоматически обновятся. Если новости меняются относительно редко, это отличный вариант.</p>

<p>Если новости меняются очень часто (раз в минуту, например), надо более аккуратно и точно расставить тэги: по разделам, как-то еще.</p>]]></content:encoded>
	</item>
	<item>
		<title>Автор: Илья</title>
		<link>http://www.smira.ru/2008/10/16/web-caching-memcached-1/comment-page-1/#comment-1041</link>
		<dc:creator>Илья</dc:creator>
		<pubDate>Mon, 14 Dec 2009 19:50:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.smira.ru/?p=98#comment-1041</guid>
		<description>&lt;p&gt;Доброго времени суток!&lt;/p&gt;

&lt;p&gt;У меня остался один вопрос без ответа. &lt;/p&gt;

&lt;p&gt;Допустим, у нас есть список новостей, который прекрасным образом хранится в кэше с версиями тэгов этих новостей (как полагается).&lt;/p&gt;

&lt;p&gt;Если какую-либо новость меняют или удаляют, как это должно происходить, версию увеличивают или удаляют (обнуляют) соответственно.&lt;/p&gt;

&lt;p&gt;Вопрос заключается в том, как кеш узнает, что добавилась еще одна новость?&lt;/p&gt;

&lt;p&gt;Самое простое, что мне приходит в голову - это хранить где-то ассоциативный массив: тип объекта - список ключей кэшей, в который может входить этот объект.&lt;/p&gt;

&lt;p&gt;И при добавлении нового объекта, проверять по типу объекта из этого списка, какой из кэшей надо удалить.&lt;/p&gt;

&lt;p&gt;Знакомы ли Вы с каким-либо другим методом обновления кэша при добавлении новых объектов?&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Доброго времени суток!</p>

<p>У меня остался один вопрос без ответа. </p>

<p>Допустим, у нас есть список новостей, который прекрасным образом хранится в кэше с версиями тэгов этих новостей (как полагается).</p>

<p>Если какую-либо новость меняют или удаляют, как это должно происходить, версию увеличивают или удаляют (обнуляют) соответственно.</p>

<p>Вопрос заключается в том, как кеш узнает, что добавилась еще одна новость?</p>

<p>Самое простое, что мне приходит в голову &#8211; это хранить где-то ассоциативный массив: тип объекта &#8211; список ключей кэшей, в который может входить этот объект.</p>

<p>И при добавлении нового объекта, проверять по типу объекта из этого списка, какой из кэшей надо удалить.</p>

<p>Знакомы ли Вы с каким-либо другим методом обновления кэша при добавлении новых объектов?</p>]]></content:encoded>
	</item>
	<item>
		<title>Автор: Андрей</title>
		<link>http://www.smira.ru/2008/10/16/web-caching-memcached-1/comment-page-1/#comment-881</link>
		<dc:creator>Андрей</dc:creator>
		<pubDate>Fri, 31 Oct 2008 05:10:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.smira.ru/?p=98#comment-881</guid>
		<description>&lt;p&gt;Если я правильно понял, речь идёт о пакете PEAR::Cache, я с ним не знаком близко, но, насколько я могу судить, это подсистема кэширования, для которой хранилищем данных кэша могут быть различные варианты БД, локальные файлы и т.п. &lt;/p&gt;

&lt;p&gt;Я не знаю точно, но, наверное, и memcached мог бы быть хранилищем кэша для PEAR::Cache. Может, меня кто-то поправит?&lt;/p&gt;

&lt;p&gt;По сути, это лишь каркас кэширования, на который навешиваются конкретные хранилища кэша, а также различные трюки при работе с ними.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Если я правильно понял, речь идёт о пакете PEAR::Cache, я с ним не знаком близко, но, насколько я могу судить, это подсистема кэширования, для которой хранилищем данных кэша могут быть различные варианты БД, локальные файлы и т.п. </p>

<p>Я не знаю точно, но, наверное, и memcached мог бы быть хранилищем кэша для PEAR::Cache. Может, меня кто-то поправит?</p>

<p>По сути, это лишь каркас кэширования, на который навешиваются конкретные хранилища кэша, а также различные трюки при работе с ними.</p>]]></content:encoded>
	</item>
	<item>
		<title>Автор: Rus</title>
		<link>http://www.smira.ru/2008/10/16/web-caching-memcached-1/comment-page-1/#comment-880</link>
		<dc:creator>Rus</dc:creator>
		<pubDate>Thu, 30 Oct 2008 15:17:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.smira.ru/?p=98#comment-880</guid>
		<description>&lt;p&gt;Добрый день Андрей подскажите пожалуйста в чем отличие кеша например в pear от мемкеша?&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Добрый день Андрей подскажите пожалуйста в чем отличие кеша например в pear от мемкеша?</p>]]></content:encoded>
	</item>
	<item>
		<title>Автор: Алексей</title>
		<link>http://www.smira.ru/2008/10/16/web-caching-memcached-1/comment-page-1/#comment-865</link>
		<dc:creator>Алексей</dc:creator>
		<pubDate>Mon, 20 Oct 2008 13:01:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.smira.ru/?p=98#comment-865</guid>
		<description>&lt;p&gt;Спасибо! Оч. интересно!
как раз сегодня начал копать материал о memcached!
 и ждем продолжения!&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Спасибо! Оч. интересно!
как раз сегодня начал копать материал о memcached!
 и ждем продолжения!</p>]]></content:encoded>
	</item>
</channel>
</rss>

