<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ars Longa, Vita Brevis &#187; Hyper Cache</title>
	<atom:link href="http://blog.sjinks.pro/tag/hyper-cache/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.sjinks.pro</link>
	<description>Quod scripsi, scripsi</description>
	<lastBuildDate>Mon, 06 Feb 2012 17:56:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>WP Super Cache vs HyperCache vs W3 Total Cache vs MaxSite Cache</title>
		<link>http://blog.sjinks.pro/wordpress/683-wp-supercache-vs-hypercache-vs-w3-total-cache-vs-maxsite-cache/</link>
		<comments>http://blog.sjinks.pro/wordpress/683-wp-supercache-vs-hypercache-vs-w3-total-cache-vs-maxsite-cache/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 10:59:55 +0000</pubDate>
		<dc:creator>Vladimir</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Hyper Cache]]></category>
		<category><![CDATA[MaxSite Cache]]></category>
		<category><![CDATA[W3 Total Cache]]></category>
		<category><![CDATA[WP Super Cache]]></category>
		<category><![CDATA[нагрузка]]></category>
		<category><![CDATA[производительность]]></category>

		<guid isPermaLink="false">http://blog.sjinks.pro/?p=683</guid>
		<description><![CDATA[Сравнение различных плагинов кэширования для WordPress Для WordPress написано много кэширующих плагинов, предназначенных для борьбы со слабой производительностью сервера (либо кривыми руками администратора, который не в состоянии настроить PHP/MySQL). Простой пользователь зачастую задаётся вопросом: какой же из плагинов выбрать? В данной статье я рассмотрю наиболее популярные плагины (WP Super Cache, Hyper Cache, W3 Total Cache [...]<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/wordpress/683-wp-supercache-vs-hypercache-vs-w3-total-cache-vs-maxsite-cache/">источник</a> обязательно.</p>]]></description>
			<content:encoded><![CDATA[<h2><em>Сравнение различных плагинов кэширования для <a href="http://blog.sjinks.pro/tag/wordpress/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  WordPress">WordPress</a></em></h2>
<p>Для WordPress написано много кэширующих плагинов, предназначенных для борьбы со слабой производительностью сервера (либо кривыми руками администратора, который не в состоянии настроить PHP/MySQL). Простой пользователь зачастую задаётся вопросом: какой же из плагинов выбрать?</p>
<p>В данной статье я рассмотрю наиболее популярные плагины (<a href="http://blog.sjinks.pro/tag/wp-super-cache/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  WP Super Cache">WP Super Cache</a>, <a href="http://blog.sjinks.pro/tag/hyper-cache/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  Hyper Cache">Hyper Cache</a>, <a href="http://blog.sjinks.pro/tag/w3-total-cache/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  W3 Total Cache">W3 Total Cache</a> и <a href="http://blog.sjinks.pro/tag/maxsite-cache/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  MaxSite Cache">MaxSite Cache</a>), а затем расскажу о результатах жестокого теста, которому я подверг все эти плагины.<span id="more-683"></span></p>
<p>Прежде, чем перейти к делу, отмечу, что я <strong>не фанат</strong> ни одного из плагинов и <strong>не использую</strong> их на своих сайтах, считая, что овчинка не стоит выделки: будущее за динамическими страницами <img src='http://static.sjinks.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Поехали.</p>
<ol>
<li><a href="http://wordpress.org/extend/plugins/wp-super-cache/">WP Super Cache</a> написан Donncha O&#8217;Caoimh, одним из разработчиков WordPress. Про своё отношение к этому плагину я уже <a href="http://blog.sjinks.pro/?s=Super+Cache">писал</a>. Плагин разрабатывался как замена WP-Cache. Ключевой особенностью плагина является генерация статических HTML-страниц таким образом, что они будут отдаваться Web-сервером — минуя PHP.</li>
<li><a href="http://wordpress.org/extend/plugins/hyper-cache/">Hyper Cache</a>. С ним я тоже <a href="http://blog.sjinks.pro/wordpress/patches/98-hyper-cache-compressed-content/">сталкивался</a>, и какое-то время плагин стоял у меня на сайте. Плагин написан гораздо проще, чем WP Super Cache и имеет более высокий рейтинг на wordpress.org.</li>
<li><a href="http://wordpress.org/extend/plugins/w3-total-cache/">W3 Total Cache</a> — новое слово в кэшировании. Поддерживает <a href="http://blog.sjinks.pro/tag/compression/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  сжатие">сжатие</a> скриптов, CSS, кэш для базы данных, работу с CDN и многое другое.</li>
<li><a href="http://maxsite.org/page/maxsite-cache">MaxSite Cache</a> — отечественная разработка, при этом платная. Я тестировал Lite-версию, так как покупать полную версию чисто для тестирования желания нет. По словам автора, выйдет абсолютным победителем при сравнении с WP Super Cache и компанией.</li>
</ol>
<p>Для теста была взята машина такое конфигурации: Intel(R) Xeon(R) CPU X3320 @ 2.50GHz, 4 ядра, 3 MiB кэш, 8 GiB DDR-2 RAM, 2×500 GB SATA, RAID1 (ARC-1210 4-Port PCI-Express to SATA RAID Controller), 82572EI Gigabit Ethernet Controller.<br />
Операционная система: Ubuntu 9.10 64-bit Server Edition<br />
Веб-сервер: nginx 0.8.19<br />
PHP: 5.2.10.dfsg.1-2ubuntu6.1 (FastCGI) + xCache 1.2.2-5, 75 процессов.</p>
<p>На тестируемой странице 25 несложных запросов, время их выполнения — 0.00993 сек.</p>
<p>На сайт натравливался ApacheBench — 10,000 запросов в 100…500 потоков. Это создаёт весьма приличную нагрузку, так как запросы идут один за другим.</p>
<p>Базовая <a href="http://blog.sjinks.pro/tag/load/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  нагрузка">нагрузка</a> — 100 параллельных потоков. Я увеличивал количество потоков до тех пор, пока web-сервер не стал отдавать ответ, отличный от 200. Более 500 потоков не тестировал.</p>
<table cellpadding="0" cellspacing="0" class="bordered" rules="all">
<thead>
<tr>
<th>&nbsp;</th>
<th>WordPress</th>
<th colspan="2">WP Super Cache 0.9.7</th>
<th colspan="2">Hyper Cache 2.6.2</th>
<th colspan="3">MaxSite Cache Lite</th>
<th colspan="2">W3 Total Cache 0.8</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Количество потоков</th>
<td>100</td>
<td>100</td>
<td>500</td>
<td>100</td>
<td>250</td>
<td>100</td>
<td>500</td>
<td>130</td>
<td>100</td>
<td>130</td>
</tr>
<tr>
<th scope="row">Время тестирования, с</th>
<td>677.442</td>
<td class="good">1.115</td>
<td class="good">1.079</td>
<td>18.736</td>
<td class="unreliable">8.633</td>
<td>3.291</td>
<td class="unreliable">2.501</td>
<td>2.992</td>
<td>21.284</td>
<td>21.086</td>
</tr>
<tr>
<th scope="row">Количество ошибок</th>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td class="imp">3663</td>
<td>0</td>
<td class="imp">2713</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th scope="row">Скорость, запрос/с</th>
<td>14.76</td>
<td class="good">8967.28</td>
<td class="good">9268.36</td>
<td>544.20</td>
<td class="unreliable">1158.30</td>
<td class="good">3038.98</td>
<td class="unreliable">3997.80</td>
<td class="good">3341.72</td>
<td>469.84</td>
<td>474.25</td>
</tr>
<tr>
<th scope="row">Среднее время обработки запроса, мс</th>
<td>6774.423</td>
<td>11.152</td>
<td>53.947</td>
<td>183.757</td>
<td class="unreliable">215.833</td>
<td>32.906</td>
<td class="unreliable">125.069</td>
<td>38.902</td>
<td>212.838</td>
<td>274.116</td>
</tr>
<tr>
<th scope="row">Среднее время обработки запроса по всем потокам, мс</th>
<td>67.744</td>
<td class="good">0.112</td>
<td class="good">0.108</td>
<td>1.838</td>
<td class="unreliable">0.863</td>
<td class="good">0.329</td>
<td class="unreliable">0.250</td>
<td class="good">0.299</td>
<td>2.128</td>
<td>2.109</td>
</tr>
<tr>
<th scope="row">Скорость передачи, Кбайт/с</th>
<td>175.12</td>
<td class="good">106154.90</td>
<td class="good">109865.55</td>
<td>6393.68</td>
<td class="unreliable">8754.04</td>
<td class="good">35537.15</td>
<td class="unreliable">34413.87</td>
<td class="good">39075.95</td>
<td>4928.74</td>
<td>4974.58</td>
</tr>
<tr>
<th scope="row">Порог завершения 95% запросов, мс</th>
<td>9188</td>
<td class="good">11</td>
<td class="good">27</td>
<td>394</td>
<td class="unreliable">268</td>
<td class="good">52</td>
<td class="unreliable">91</td>
<td class="good">58</td>
<td>344</td>
<td>364</td>
</tr>
</tbody>
</table>
<p>То, что не вошло в таблицу: средняя загрузка системы (load average) при тесте голого WordPress зашкаливала за 60. При тесте WP Super Cache и MaxSite Cache я не успевал ее измерить (была ничтожной). С Hyper Cache и W3 Total Cache загрузка доходила до где-то 10. Так что <strong>кэширование работает и выполняет свою работу — снижает нагрузку на сервер</strong>.</p>
<p>«Голый» WordPress тестировать более, чем со 100 потоками смысла нет <img src='http://static.sjinks.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>В ходе тестирования выяснился абсолютный лидер — WP Super Cache. Скорость отдачи кэшированных страниц поистине фантастическая — почти 800 мегабит/сек. Хотя такая скорость — это больше заслуга nginx.</p>
<p>MaxSite Cache Lite на 100 параллельных потоках проиграл WP Super Cache <strong>практически в пять раз</strong>! Причина понятна: WP Super Cache создает статические файлы так, что web-сервер их может отдавать клиенту без привлечения PHP-интерпретатора. А статические запросы при прочих равных всегда быстрее динамических. Так что платить 30 WMZ за полную версию MaxSite Cache я пока не готов <img src='http://static.sjinks.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Среди остальных плагинов MaxSite Cache выигрывает благодаря свой простоте: минимум проверок, никаких регулярных выражений и лишних подключаемых файлов. Но даже такой подход не спасёт от хорошего SlashDot-эффекта: какой-то процент пользователей будет видеть ошибку сервера, для других возрастёт время генерации страницы. Это касается и остальных плагинов. Мораль: подключение PHP-интерпретатора — дорогое удовольствие.</p>
<p>По поводу масштабируемости: более 130 потоков не пережил ни один кэш (кроме WP Super Cache).</p>
<p>Аутсайдером, на мой взгляд, оказался W3 Total Cache — при почти одинаковой с Hyper Cache нагрузкой на сервер, время отдачи страниц было значительно выше. Хотя если бы тест был не таким искусственным, то <a href="http://blog.sjinks.pro/tag/performance/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  производительность">производительность</a> W3 Total Cache могла быть и более высокой. Хотя во многом W3 Total Cache делает то, что <a href="http://blog.sjinks.pro/feedback/">опытный системный администратор</a> может настроить на уровне сервера.</p>
<p>Вообще плагины кэширования обладают очень интересной особенностью: они переносят нагрузку с одной подсистемы (процессор) на другую (диск). Так что на десктопном железе, слабых дисках или виртуальных серверах <strong>кэш может ухудшить ситуацию</strong>: процессор будет тратить время не на выполнение кода, а на ожидание завершения ввода/вывода (iowait). Так что при большом количестве оперативной памяти имеет смысл создавать RAM-диск и помещать кэш на него.</p>
<p>Кстати, даже при хорошей дисковой подсистеме, но при малом объеме оперативной памяти при большом объеме кэша могут возникать проблемы: например, если дисковый кэш у операционной системы мал, то при интенсивном равномерном обращении к разным страницам может возникнуть большая дисковая активность.</p>
<p>Вообще, как показывает мой опыт, прежде чем использовать плагин кэширования страниц, имеет смысл все же грамотно настроить сервер (<a href="http://blog.sjinks.pro/feedback/">обращайтесь</a>). Например, если вместо Apache поставить nginx, можно освободить довольно много драгоценной памяти (prefork у Apache — это весьма сильный убийца производительности); если увеличить размер буфера ключей MySQL, можно добиться уменьшения дисковой активности. Если поставить opcode cacher (APC, xCache, eAccelerator), то можно значительно снизить затраты на перекомпиляцию PHP-кода и уменьшить время отклика системы. Если использовать оптимизатор, встроенный в eAccelerator, то можно <a href="http://blog.sjinks.pro/php/650-php-code-beauty-impacts-performance/">повысить производительность PHP-кода</a>. <a href="http://wordpress.org/extend/plugins/sqlmon/">Анализ производительности MySQL-запросов</a> и знание принципов работы оптимизатора помогут переписать слабые запросы/добавить отсутствующие индексы в базу данных. Простор для действий довольно-таки большой. И динамика страниц остаётся <img src='http://static.sjinks.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/wordpress/683-wp-supercache-vs-hypercache-vs-w3-total-cache-vs-maxsite-cache/">источник</a> обязательно.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.sjinks.pro/wordpress/683-wp-supercache-vs-hypercache-vs-w3-total-cache-vs-maxsite-cache/feed/</wfw:commentRss>
		<slash:comments>53</slash:comments>
		</item>
		<item>
		<title>Hyper Cache и сжатие контента</title>
		<link>http://blog.sjinks.pro/wordpress/patches/98-hyper-cache-compressed-content/</link>
		<comments>http://blog.sjinks.pro/wordpress/patches/98-hyper-cache-compressed-content/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 17:25:12 +0000</pubDate>
		<dc:creator>Vladimir</dc:creator>
				<category><![CDATA[Патчи]]></category>
		<category><![CDATA[Hyper Cache]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[патч]]></category>
		<category><![CDATA[сжатие]]></category>

		<guid isPermaLink="false">http://blog.sjinks.pro/?p=98</guid>
		<description><![CDATA[Учим Hyper Cache сжимать кэшированный контент для экономии трафика Установил сегодня плагин — Hyper Cache. Очень хорошая вещь! Однако на то мы и «пытливые русские умы», чтобы сделать хорошую вещь еще лучше Сначала я хотел попробовать заставить Hyper Cache отдавать кэшированный контент через nginx, но это оказалось не очень простой задачей (пришлось бы переконфигурировать nginx), поэтому я [...]<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/wordpress/patches/98-hyper-cache-compressed-content/">источник</a> обязательно.</p>]]></description>
			<content:encoded><![CDATA[<h2><em>Учим <a href="http://blog.sjinks.pro/tag/hyper-cache/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  Hyper Cache">Hyper Cache</a> сжимать кэшированный контент для экономии трафика</em></h2>
<p>Установил сегодня плагин — <a href="http://www.satollo.com/english/wordpress/hyper-cache" rel="nofollow">Hyper Cache</a>. Очень хорошая вещь!</p>
<p>Однако на то мы и «пытливые русские умы», чтобы сделать хорошую вещь еще лучше <img src='http://static.sjinks.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
Сначала я хотел попробовать заставить Hyper Cache отдавать кэшированный контент через nginx, но это оказалось не очень простой задачей (пришлось бы переконфигурировать nginx), поэтому я лишь ограничился сжатием отдаваемого контента.<span id="more-98"></span></p>
<p>Браузеры, которые поддерживают сжатый контент, анонсируют это заголовком <code>Accept-Encoding</code>, например:</p>
<pre>
Accept-Encoding: gzip,deflate
</pre>
<p><a href="http://blog.sjinks.pro/tag/compression/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  сжатие">Сжатие</a> при помощи gzip (даже на минимальном уровне) позволяет сжать HTML-код в среднем <strong>в 4 раза</strong>. Это и экономия трафика, и экономия ресурсов системы (загрузка процессора незначительно возрастает, но контент отдаётся быстрее).</p>
<p><a href='http://static.sjinks.info/wp-content/uploads/2008/04/advanced-cachephp.diff'>Патч в формате unified diff для Hyper Cache для сжатия кэшированного контента</a>.</p>
<p><strong>Внимание:</strong> <a href="http://blog.sjinks.pro/tag/patch/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  патч">патч</a> нужно применить к двум файлам:</p>
<ul>
<li><code>/wp-content/advanced-cache.php</code> (только если плагин активирован);</li>
<li><code>/wp-content/plugins/hyper-cache/advanced-cache.php</code>.</li>
</ul>
<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/wordpress/patches/98-hyper-cache-compressed-content/">источник</a> обязательно.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.sjinks.pro/wordpress/patches/98-hyper-cache-compressed-content/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

