<?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/"
	
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>bueltge.de [by:ltge.de] &#187; Cache</title>
	<atom:link href="http://bueltge.de/tag/cache/feed/" rel="self" type="application/rss+xml" />
	<link>http://bueltge.de</link>
	<description>Frank Bültge schreibt auf bueltge.de zu den Themen Webentwicklung &#38; design, WordPress, Literatur und andere Themen bezüglich Internet und Development</description>
	<lastBuildDate>Mon, 06 Feb 2012 12:19:43 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Feed Cache von WordPress löschen</title>
		<link>http://bueltge.de/feed-cache-von-wordpress-loschen/1231/</link>
		<comments>http://bueltge.de/feed-cache-von-wordpress-loschen/1231/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 05:40:09 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1231</guid>
		<description><![CDATA[Der Feed-Cache von WordPress wird in der Datenbank abgelegt, Tabelle <code>options</code> und manchmal möchte man diesen löschen. Mit Hilfe von SQL ist dies schnell erledigt.]]></description>
			<content:encoded><![CDATA[<p>Der Feed-Cache von WordPress wird in der Datenbank abgelegt, Tabelle <code>options</code> und manchmal möchte man diesen löschen. Mittels ein wenig SQL ist das schnell erledigt - hat aber keinen Fallback, aufpassen!<br />
Innerhalb von WordPress tue ich dies mit Hilfe des Plugins <a href="http://bueltge.de/adminer-fuer-wordpress/1014/">Adminer</a>, was einen kompletten mySQL Zugriff erlaubt und trotzdem im Backend von WordPress nutzbar ist. Alternativ geht natürlich auch jedes andere Tool, beispielsweise <a href="http://www.phpmyadmin.net/home_page/index.php">phpMyAdmin</a>.<br />
<span id="more-1231"></span><br />
<a href="http://wpengineer.com/wp-content/uploads/sql-feedcache.png"><img src="http://wpengineer.com/wp-content/uploads/sql-feedcache-300x83.png" alt="" title="sql-feedcache" width="300" height="83" class="aligncenter size-medium wp-image-2115" /></a></p>
<p>Mit Hilfe der folgenden Syntax ist der Cache schnell gelöscht, der Beispielpräfix <code>wp_</code> muss natürlich angepasst werden.</p>
<pre><code class="sql">
DELETE FROM `wp_options` WHERE `option_name` LIKE ('_transient%_feed_%')
</code></pre>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/feed-cache-von-wordpress-loschen/1231/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/feed-cache-von-wordpress-loschen/1231/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
	
		<media:thumbnail url="http://wpengineer.com/wp-content/uploads/sql-feedcache-300x83.png" />
		<media:content url="http://wpengineer.com/wp-content/uploads/sql-feedcache-300x83.png" medium="image">
			<media:title type="html">sql-feedcache</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Feed Cache von WordPress</title>
		<link>http://bueltge.de/feed-cache-von-wordpress/1039/</link>
		<comments>http://bueltge.de/feed-cache-von-wordpress/1039/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 08:07:30 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Feed]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1039</guid>
		<description><![CDATA[WordPress bietet schon lange die Möglichkeit über eigene Funktionen Feeds auszulesen und im Blog zu verwenden. Dabei kommt seit Version 2.8 von WordPress eine neue Funktion zum Einsatz. Es gibt also zwei Möglichkeiten mit Feeds in WordPress zu arbeiten und in beiden Funktionen werden die Daten gecacht. Nicht immer ist das gewollt und daher zeige ich mal auf, wie man auf die unterschiedlichen Cache-Varianten den beiden Funktionen einwirkt.]]></description>
			<content:encoded><![CDATA[<p>WordPress bietet schon lange die Möglichkeit über eigene Funktionen Feeds auszulesen und im Blog zu verwenden. Dabei kommt seit Version 2.8 von WordPress eine neue Funktion zum Einsatz. Es gibt also zwei Möglichkeiten mit Feeds in WordPress zu arbeiten und in beiden Funktionen werden die Daten gecacht. Nicht immer ist das gewollt und daher zeige ich mal auf, wie man auf die unterschiedlichen Cache-Varianten den beiden Funktionen einwirkt.<br />
<span id="more-1039"></span></p>
<h3><code>fetch_feed()</code> <small>Seit WordPress 2.8</small></h3>
<p>Mit Version 2.8 von WordPress wurde die Klasse SimplePie in den Core geholt. SimplePie hat sich immer durch eine sehr schnelle Entwicklung und eine stabile nutzerfreundliche Klasse ausgezeichnet. Im Vorfeld wurde MagpieRSS eingesetzt, was in vielen fällen nicht nutzbar war und die Entwicklung ist recht langsam. Seite geraumer Zeit wird auch SimplePie nicht mehr durch die Entwickler betreut, was zuerst für eine gewissen Unruhe in den Entwicklerkreisen sorgte; Entwickler aus dem WordPress-Team kümmern sich aber um die Klasse und sorgen für ihr bestehen. Mehr dazu gibt es meinem Artikel <a href="http://bueltge.de/simplepie-entwicklung-gestoppt/1024/">SimplePie Entwicklung gestoppt</a></p>
<p>Nun ist die Klasse aber im Core von WordPress und eignet sich ebenso für RSS- und ATOM-Feeds. Sie nutzt den Cache von WordPress und der kann via Hook angesteuert werden.</p>
<p>Zuerst aber ein kleines Beispiel um einen Feed mit der Klasse in WordPress auszulesen.</p>
<pre><code>
&lt;?php
include_once(ABSPATH . WPINC . '/feed.php');
$rss = fetch_feed('http://bueltge.de/feed/');
$rss_items = $rss-&gt;get_items( 0, $rss-&gt;get_item_quantity(5) );
if ( !$rss_items ) {
	echo 'no items';
} else {
	foreach ( $rss_items as $item ) {
		echo '&lt;p&gt;&lt;a href=&quot;' . $item-&gt;get_permalink() . '&quot;&gt;' . $item-&gt;get_title() . '&lt;/a&gt;&lt;/p&gt;';
	}
}
?&gt;
</code></pre>
<p>Das kleine Beispiel liest meinen Feed aus und gibt die letzten 5 Einträge zurück.</p>
<p>Kern ist die Funktion <code>fetch_feed()</code>. Diese Funktion besitzt einen Hook, durch den man auf das Caching Einfluss nehmen kann - <code>wp_feed_cache_transient_lifetime</code>.<br />
Im Standard ist der Cache auf 12 Stunden (<code>43200</code>) eingestellt, was nicht immer im Sinne der Nutzer ist. Der Wert wird über die Methaode <code>WP_Feed_Cache_Transient()</code> bedient, Parameter <code>$lifetime</code>. Daher ist es ratsam, den folgenden kleinen Aufruf zu nutzen, sei es im Plugin oder in der <code>functions.php</code> des Themes.</p>
<pre><code>
add_filter( 'wp_feed_cache_transient_lifetime', create_function( '$a', 'return 1800;' ) );
</code></pre>
<p>In diesem Beispiel habe ich den Cache auf 30 Minuten gesetzt. Mit Hilfe der <a href="http://codex.wordpress.org/Conditional_Tags">Conditional Tags</a> kann man das ganze dann so steuern, dass der Cache-Hook nur angesteuert wird, wenn man auf einer Seite (<code>is_page()</code>) oder bspw. im Frontend (<code>!is_admin()</code>) des Blog ist. Hier muss man einfach die Möglichkeiten nutzen und an die eigenen Bedürfnisse anpassen.</p>
<p>Eine kleine Möglichkeit möchte ich aber noch aufzeigen, <strong>verfügbar ab WordPress 2.9</strong> (<a href="http://core.trac.wordpress.org/ticket/11117">Ticket 11117</a>), um das Debuggen für Entwickler zu vereinfachen. Damit wird der Cache in der Umgebung deaktiviert, wenn die Konstante <code>WP_DEBUG</code> gesetzt ist, was ab und dann wichtig sein kann. Das Setzen der Konstante geschieht in der Regel in der <code>wp-config.php</code> der Installation, alternativ natürlich auch im Plugin.</p>
<pre><code>
function do_not_cache_feeds(&amp;$feed) {
	$feed-&gt;enable_cache(false);
}

if ( defined('WP_DEBUG') &amp;&amp; WP_DEBUG )
	add_action( 'wp_feed_options', 'do_not_cache_feeds' );
</code></pre>
<h3><code>fetch_rss()</code></h3>
<p>Eine weitere Funktion ist <code>fetch_rss()</code>, die mit WordPress 2.8 auf die Abkündigungsliste gesetzt wurde. Als Alternative ist die oben genannte Funktion aktiv. Aktuell ist <code>fetch_rss()</code> aber noch verfügbar und wird auch unterstützt. Daher zur Vollständigkeit, auch hier die Möglichkeit den Cache zu beeinflussen.</p>
<p>Aber auch dazu zuvor ein Beispiel um den Feed auszulesen und die letzten 5 Einträge des Feed auszugeben.</p>
<pre><code>
&lt;?php
include_once(ABSPATH . WPINC . '/rss.php');
$rss = fetch_rss('http://bueltge.de/feed/');
$rss_items = array_slice($rss-&gt;items, 0, 5);
if ( empty($rss_items) ) {
	echo 'no items';
} else {
	foreach ( $rss_items as $item ) {
		echo '&lt;p&gt;&lt;a href=&quot;' . $item['link'] . '&quot;&gt;' . $item['title'] . '&lt;/a&gt;&lt;/p&gt;';
	}
}
?&gt;
</code></pre>
<p>Hier wird die Funktion <code>fetch_rss()</code> zum Auslesen genutzt und der Cache kann via Konstanten verändert werden. Diese muss man entweder direkt in der wp-config.php definieren, wo sie dann global für alle Anwendungen gelten, oder man muss sie in seine eigenen Funktionen integrieren. </p>
<pre><code>
define('MAGPIE_CACHE_ON', 0); // deaktiviert den Cache
define('MAGPIE_CACHE_AGE', 60*60) // Cache 1 Stunde in Sekunden
</code></pre>
<h3>Fazit</h3>
<p>Da man sich bei WordPress entschieden hat, MagpieRSS in der Zukunft nicht mehr zu unterstützen, sollte man sich bei neuen Aufgaben immer mit SimplePie auseinandersetzen und die zweite Möglichkeit nicht in Betracht ziehen. Insofern muss man auch nicht die vielen anderen Konstanten von MagpieRSS in WP kennen.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/feed-cache-von-wordpress/1039/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/feed-cache-von-wordpress/1039/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>eAccelerator für WordPress</title>
		<link>http://bueltge.de/eaccelerator-fuer-wordpress/1018/</link>
		<comments>http://bueltge.de/eaccelerator-fuer-wordpress/1018/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 10:03:40 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1018</guid>
		<description><![CDATA[Der eAccelerator kann auf Webservern zum Einsatz kommen, wird als Modul implementiert, ist Open Source und dient als Beschleuniger, Optimierer und Cache für PHP-Seiten. Mit Hilfe von phpinfo kann kann man schnell feststellen, ob das Modul aktiv ist - wenn ja, dann lohnt die Einbindung von WordPress. Dies ist recht einfach und dazu einige Hinweise.]]></description>
			<content:encoded><![CDATA[<p>Der <a href="http://eaccelerator.net/">eAccelerator</a> kann auf Webservern zum Einsatz kommen, wird als Modul implementiert, ist Open Source und dient als Beschleuniger, Optimierer und Cache für PHP-Seiten. Mit Hilfe von <a href="http://de2.php.net/manual/de/function.phpinfo.php">phpinfo</a> kann kann man schnell feststellen, ob das Modul aktiv ist - wenn ja, dann lohnt die Einbindung von WordPress. Dies ist recht einfach und dazu einige Hinweise.<br />
<span id="more-1018"></span><br />
Um mit WordPress den eAccelerator zu nutzen, muss der Standard Cache von WP ersetzt werden. Dazu gibt es eine <a href="http://neosmart.net/dl.php?id=13">Erweiterung</a>, die ich ein wenig ergänzt habe. Die Ergänzung in der Syntax habe ich hinzugefügt, da ich im Backend von WordPress den eigenen Cache nutzen möchte, also Standard WordPress. Der Grund dafür sind diverse AJAX-Themen und dass die Aktualisierung zu gering ist. Das wirkt sich beispielsweise aus; wenn man Kommentare frei schaltet, dann wird die Zahl der ausstehenden Kommentare nicht aktualisiert. Ebenso gibt es an anderen Stellen diese Zeitspanne und daher nehme ich das Backend nicht mit in den Cache.</p>
<p>Nun aber zu einigen Werten, so dass man sich ein Bild machen kann, was die Nutzung des eAccelerator bei mir bewirkt hat.</p>
<p>Auf der Startseite bin ich ohne Optimierung mit Hilfe von Plugins oder sonstigen Geheimtricks auf 21 Queries gekommen. Nach Nutzung des eAccelerator bewege ich mich mit 8 Queries auf der Startseite und die Speicherauslastung geht von rund 18MByte auf rund 10MByte. Einfache Einblicke in den Speicher gibt beispielsweise das Plugin <a href="http://webjawns.com/tpc-memory-usage-wordpress-plugin/">TPC Memory Usage</a> und die Queries lese ich mit dem Plugin <a href="http://bueltge.de/wordpress-performance-analysieren-plugin/558/">Debug Queries</a>. Die Speichernutzung könnte man noch Steigern, in dem man zusätzlich zum eAccelerator den <a href="http://www.zend.com/en/products/guard/?anchor=Optimizer#Optimizer">Zend Optimizer</a> einsetzt. Nachlesen kann man das in diesem Beitrag <a href="http://webjawns.com/2009/09/wordpress-memory-usage-reduced-from-14mb-to-1-4mb/">WordPress memory usage reduced from 14MB to 1.4MB</a>.</p>
<p>Der Cache von WordPress lässt sich einfach ersetzen, in dem an im Ordner <code>wp-content</code> eine Datei mir dem Namen ablegt, welche dann anstatt der WordPress eigenen <code>cache.php</code> gezogen wird.</p>
<pre><code>
if ( file_exists(WP_CONTENT_DIR . '/object-cache.php') ) {
	require_once (WP_CONTENT_DIR . '/object-cache.php');
	$_wp_using_ext_object_cache = true;
} else {
	require_once (ABSPATH . WPINC . '/cache.php');
	$_wp_using_ext_object_cache = false;
}
</code></pre>
<p>Diesen Weg geht auch die oben genannte Erweiterung, die ich ein wenig verändert habe, so dass im Admin-Bereich von WordPress der Cache von WordPress genutzt wird. Wer das ebenfalls nutzen möchte, der nutzt bitte den Code im folgenden und speichert ihn in einer Datei mit Namen <code>object-cache.php</code>. Die Original-Version, die auch gepflegt wird, findet ihr auf der <a href="http://neosmart.net/dl.php?id=13">Seite der Erweiterung</a> von NeoSmart Technologies. Die bieten im übrigen auch Lösungen für den APC und XCache in Verbindung mit WordPress an.</p>
<pre><code>
&lt;?php

/*
Name: eAccelerator for WordPress
Description: eAccelerator backend for the WP Object Cache, exlude the WP Backend.
Version: 0.6.1
URI: http://neosmart.net/dl.php?id=13
Author: Computer Guru
Author URI: http://neosmart.net/blog/

* Install this file to /wp-content/object-cache.php
* If on Windows, restart IIS after installing for best results

* 0.6.1 Small modification for wp-admin by Frank Bueltge - http://bueltge.de/

Thanks to Ryan Boren for his original memcached code.

*/
if ( strpos($_SERVER['REQUEST_URI'], 'wp-admin') !== false)
	$wp_admin = TRUE;

// Gracefully revert to default cache if eAccelerator is not installed
if ( !function_exists('eaccelerator_get') || $wp_admin )
	include_once(ABSPATH . WPINC . '/cache.php');
else {
//echo $_SERVER['REQUEST_URI'];
function wp_cache_add($key, $data, $flag = '', $expire = 0) {
	return wp_cache_set($key, $data, $flag, $expire);
}

function wp_cache_close() {
	return true;
}

function wp_cache_delete($id, $flag = '') {
	global $wp_object_cache;

	return $wp_object_cache-&gt;delete($id, $flag);
}

function wp_cache_flush() {
	global $wp_object_cache;

	return $wp_object_cache-&gt;flush();
}

function wp_cache_get($id, $flag = '') {
	global $wp_object_cache;

	return $wp_object_cache-&gt;get($id, $flag);
}

function wp_cache_init() {
	global $wp_object_cache;

	$wp_object_cache = new WP_Object_Cache();
}

function wp_cache_replace($key, $data, $flag = '', $expire = 0) {
	return wp_cache_set($key, $data, $flag, $expire);
}

function wp_cache_set($key, $data, $flag = '', $expire = 0) {
	global $wp_object_cache;

	return $wp_object_cache-&gt;set($key, $data, $flag, $expire);
}

class WP_Object_Cache {
	var $global_groups = array ('users', 'userlogins', 'usermeta');
	var $cache = array();

	function delete($id, $group = 'default') {
		$key = $this-&gt;key($id, $group);
		$result = eaccelerator_rm($key);
		if ( $result )
				unset($this-&gt;cache[$key]);
		return $result;
	}

	function flush() {
		eaccelerator_clear();
		$this-&gt;cache = array ();

		return true;
	}

	function get($id, $group = 'default') {
		$key = $this-&gt;key($id, $group);

		if ( isset($this-&gt;cache[$key]) )
			$value = $this-&gt;cache[$key];
		else
			$value = eaccelerator_get($key);

		$value = maybe_unserialize($value);

		if ( NULL === $value )
			$value = false;

		$this-&gt;cache[$key] = $value;

		return $value;
	}

	function set($id, $data, $group = 'default', $expire = 0) {
		$key = $this-&gt;key($id, $group);
		if ( is_resource($data) )
			return false;

		$data = maybe_serialize($data);

		$result = eaccelerator_put($key, $data, $expire);
		if ( $result )
			$this-&gt;cache[$key] = $data;

		return $result;
	}

	function key($key, $group) {
		global $blog_id;

		if ( empty($group) )
			$group = 'default';

		if (false !== array_search($group, $this-&gt;global_groups))
			$prefix = '';
		else
			$prefix = $blog_id . ':';

		return md5(ABSPATH . "$prefix$group:$key");
	}

	function stats() {
		// Note that this is the total eAccelerator stats, not just WP but also any other apps using eAccelerator var storage
		$eaccelerator_info = eaccelerator_info();
		echo "&lt;p&gt;\n";
		echo "&lt;strong&gt;Cached Variables:&lt;/strong&gt; {$eaccelerator_info['cachedKeys']}&lt;br/&gt;\n";
		echo "&lt;strong&gt;Cached Scripts:&amp;nbsp;&amp;nbsp;&lt;/strong&gt; {$eaccelerator_info['cachedScripts']}&lt;br/&gt;\n";
		echo "&lt;/p&gt;\n";

		if ( !empty($this-&gt;cache) ) {
			echo "&lt;pre&gt;\n\r";
			print_r($this-&gt;cache);
			echo "&lt;/pre&gt;\n\r";
		}
	}

	function WP_Object_Cache() {
		// Empty Constructor
	}
}
} //End Else
?&gt;
</code></pre>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/eaccelerator-fuer-wordpress/1018/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/eaccelerator-fuer-wordpress/1018/feed/</wfw:commentRss>
		<slash:comments>38</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress Cache nutzen</title>
		<link>http://bueltge.de/wordpress-cache-nutzen/999/</link>
		<comments>http://bueltge.de/wordpress-cache-nutzen/999/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 09:42:47 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=999</guid>
		<description><![CDATA[WordPress besitzt einen internen Cache, der auch für Erweiterungen genutzt werden kann. Dazu stehen diverse Funktionen bereit und man muss keine eigenen Ideen verwirklichen, sondern kann die Cache-Funktionalität von WordPress einfach nutzen.
Um die Funktionen kennen zu lernen und ein wenig zu verstehen eignet sich ein kleines aber verständliches Beispiel am besten und daher cache ich im folgendem Tutorial einen Feed, der im Frontend ausgegeben werden soll.]]></description>
			<content:encoded><![CDATA[<p>WordPress besitzt einen internen Cache, der auch für Erweiterungen genutzt werden kann. Dazu stehen diverse Funktionen bereit und man muss keine eigenen Ideen verwirklichen, sondern kann die Cache-Funktionalität von WordPress einfach nutzen.<br />
Um die Funktionen kennen zu lernen und ein wenig zu verstehen eignet sich ein kleines aber verständliches Beispiel am besten und daher cache ich im folgendem Tutorial einen Feed, der im Frontend ausgegeben werden soll.</p>
<p>Alle Funktionen des <a href="http://codex.wordpress.org/Function_Reference/WP_Cache">Cache sind im Codex</a> von WordPress gelistet, so dass ein Blick in den Codex lohnt, wenn man sich mit der Syntax beschäftigt.</p>
<p>Die erste Cache Lösung kam mit WordPress 2.3 und war dateibasierend. Der Cache war optionale und konnte über einige Parameter konfiguriert werden, siehe Artikel <a href="http://bueltge.de/wordpress-cache-kontrollieren/479/">WordPress Cache kontrollieren</a>.<br />
Aktiviert wurde er über die folgende Konstante: <code>define('ENABLE_CACHE', true);</code><br />
<span id="more-999"></span><br />
Der größte Sprung in der Vergangenheit zum Thema cache fand mit Version 2.6 statt, in der man den Cache auf eine objektorientierte Lösung geändert hat. Damit liegen die Möglichkeiten der Cache-Nutzung eher auf Seiten des Servers und nicht explizit auf Seiten von WordPress. Dies wurde vor allem realisiert, um die größtmöglichen Ressourcen aus dem Server zu schöpfen und nicht an WordPress zu übergeben. Mit dieser Einführung muss der Cache von WordPress auch nicht mehr explizit aktiviert werden, er ist immer aktiv. Daher ist es aber wichtig, dass der Server über ein gewisses Mindestmaß an RAM verfügt, dabei setzt WordPress 32 MByte voraus - ABER, dass ist nicht immer so und so ist beispielsweise beim Updaten des Core ein Aufruf enthalten, der den RAM auf 128MByte definiert, was in vielen Fällen nicht vorhanden und ist und damit klappt das Update nicht.<br />
Aber darum soll es hier nicht gehen, denn ich will ja erklären, wie man den Cache in eigenen Erweiterungen nutzen kann. Also zurück zur Syntax und ich starte einfach mal mit den wichtigsten Funktionen um unser kleines Beispiel zu realisieren.</p>
<p>Alle Funktionen finden sich in <code>wp-includes/cache.php</code>, alternativ im <a href="http://codex.wordpress.org/Function_Reference/WP_Cache">Codex</a> nachlesen.</p>
<p>Um den Cache neu zu setzen, insofern es keine Daten zu diesem Schlüssel gibt, dient die folgenden Funktion.</p>
<pre><code>
/**
 * @param int|string $key The cache ID to use for retrieval later
 * @param mixed $data The data to add to the cache store
 * @param string $flag The group to add the cache to
 * @param int $expire When the cache data should be expired
 */
wp_cache_add($key, $data, $flag = '', $expire = 0)
</code></pre>
<p>Um Cache-Daten zu einem Schlüssel zu löschen, gibt es das Gegenstück.</p>
<pre><code>
/**
 * @param int|string $id What the contents in the cache are called
 * @param string $flag Where the cache contents are grouped
 * @return bool True on successful removal, false on failure
 */
wp_cache_delete($id, $flag = '')
</code></pre>
<p>Das Holen von Daten zu einem Schlüssel geschieht mit Hilfe von:</p>
<pre><code>
/**
 * @param int|string $id What the contents in the cache are called
 * @param string $flag Where the cache contents are grouped
 * @return bool|mixed False on failure to retrieve contents or the cache
 */
wp_cache_get($id, $flag = '')
</code></pre>
<p>Soll innerhalb des Cache zu einem Schlüssel der Inhalt ersetzt werden, dann kommt die nachfolgenden Funktion ins Spiel.</p>
<pre><code>
/**
 * @param int|string $id What to call the contents in the cache
 * @param mixed $data The contents to store in the cache
 * @param string $flag Where to group the cache contents
 * @param int $expire When to expire the cache contents
 * @return bool False if cache ID and group already exists, true on success
 */
wp_cache_replace($key, $data, $flag = '', $expire = 0)
</code></pre>
<p>Nun aber ein kleines Beispiel, welches den Feed cacht. Der Feed wird mittels <code>fetch_rss()</code> geladen, eine Funktion von WordPress die schon seit Version 1.5 vorhanden ist.</p>
<pre><code>
$mycache = wp_cache_get( 'mycache' ); // hole Daten aus dem Cache zu Schlüssel "mycache"
if ($mycache == false) { // wenn es keine Daten gibt, dann
	$mycache = fetch_rss("http://mycache.com/feed/"); // feed parsen
	wp_cache_set( 'mycache', $mycache ); // feedinhalt zum Schlüssel "mycache" abspeichern
}
var_dump( $mycache ); // Inhalt ausgeben
</code></pre>
<p>Ein Hinweis noch: einen Einblick in den Cache von WordPress bekommt einfach via der Variable <code>$wp_object_cache</code> oder mit Hilfe der Plugin <a href="http://bueltge.de/debug-objects-wordpress-plugin/966/">Debug Objects</a> oder <a href="http://bueltge.de/wordpress-cache-steuern-plugin/819/">WP Cache Inspect</a>; wobei Debug Objects explizit dafür gemacht wurde und nur für Entwicklungsumgebungen genutzt werden sollte.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wordpress-cache-nutzen/999/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-cache-nutzen/999/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress Cache steuern (Plugin)</title>
		<link>http://bueltge.de/wordpress-cache-steuern-plugin/819/</link>
		<comments>http://bueltge.de/wordpress-cache-steuern-plugin/819/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 16:02:30 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[WP]]></category>
		<category><![CDATA[WP2.7]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=819</guid>
		<description><![CDATA[Seit Version 2.0 von WordPress wird mit dem Cache experimentiert und seit Version 2.3 ist er recht ausgewachsen. Dabei hat man die Strategie gewechselt und nutzt einen objektorientierten Cache. Der Cache arbeitet an den verschiedensten Stellen und ist nicht immer vom Betreiber des Blog gewollt. Daher hat <a href="http://blog.ftwr.co.uk/">Peter Westwood</a> vor langer Zeit mal ein <a href="http://blog.ftwr.co.uk/wordpress/wp-cache-inspect/">Plugin</a> vorgestellt, welches das Steuern des Cache zulässt. Dieses habe ich schon seit geraumer Zeit um einige Punkte erweitert, wobei der Zugriff nicht immer auf die Schnelle möglich war, denn man musste sich durch das Menu von WP arbeiten - siehe <a href="http://bueltge.de/wordpress-cache-kontrollieren/479/">Plugin Seite</a>.

Lange Rede kurzer Sinn - ich habe die neue WordPress-Version und diverse Wünsche von Nutzern zum Anlass genommen und ein neues Plugin erstellt. Damit löse ich das <a href="http://bueltge.de/wordpress-cache-kontrollieren/479/">alte Plugin</a> ab und pflege nur noch dieses hier.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://bueltge.de/wp-content/images/wp/wp-cache-inspect-font.png" alt="Cache Data in Frontend" /><br />
Seit Version 2.0 von WordPress wird mit dem Cache experimentiert und seit Version 2.3 ist er recht ausgewachsen. Dabei hat man die Strategie gewechselt und nutzt einen objektorientierten Cache. Der Cache arbeitet an den verschiedensten Stellen und ist nicht immer vom Betreiber des Blog gewollt. Daher hat <a href="http://blog.ftwr.co.uk/">Peter Westwood</a> vor langer Zeit mal ein <a href="http://blog.ftwr.co.uk/wordpress/wp-cache-inspect/">Plugin</a> vorgestellt, welches das Steuern des Cache zulässt. Dieses habe ich schon seit geraumer Zeit um einige Punkte erweitert, wobei der Zugriff nicht immer auf die Schnelle möglich war, denn man musste sich durch das Menu von WP arbeiten - siehe <a href="http://bueltge.de/wordpress-cache-kontrollieren/479/">Plugin Seite</a>.</p>
<p>Lange Rede kurzer Sinn - ich habe die neue WordPress-Version und diverse Wünsche von Nutzern zum Anlass genommen und ein neues Plugin erstellt. Damit löse ich das <a href="http://bueltge.de/wordpress-cache-kontrollieren/479/">alte Plugin</a> ab und pflege nur noch dieses hier.<br />
<span id="more-819"></span></p>
<h3>Was macht das Plugin?</h3>
<p>Das Plugin ermöglicht es an verschiedenen Stellen des Backend einen Link, zum Aktualisieren des WordPress internen Cache, zu hinterlegen.<br />
Ebenso kann man sich alle Inhalte des Cache in einer einfachen Baumstruktur anschauen.<br />
Aber auch ohne aktiv zu werden steuert das Plugin den Cache, in dem es in Bereichen wie Kommentar frei geben, Beitrag editieren, Beitrag löschen und ähnliches den Cache neu aufsetzt. Alternativ kann man das via Direktzugriff im Backend und Frontend machen. Die unterschiedlichen Möglichkeiten lassen sich via Optionen setzen.<br />
Ebenso kann man als geloggte User, der die Rechte der Cache-Steuerung hat, in der Regel Admin&apos;s, im Frontend die wichtigsten Inhalte des Cache sehen.</p>
<p><strong>Vielen Dank</strong> an <a href="http://www.code-styling.de/">Heiko Rabe</a>, <a href="http://blogwerk.com/">Philip Hetjens</a> und <a href="http://www.ebiene.de/">Sergej Müller</a> für die Unterstützung beim Plugin. Diverse Ansätze und Überlegungen kamen aus den sehr netten Kontakten.</p>
<h3>Anforderungen</h3>
<p>Das Plugin arbeitet mit WP 2.0 und höher, inklusive 2.5, optimiert ist es für 2.6 &#038; 2.7.</p>
<h3>Installation</h3>
<ol>
<li>Plugin downloaden und die zip-Datei lokal entpacken.</li>
<li>Die PHP-Datei in euren WordPress-Plugin-Ordner kopieren (<code>/wp-content/plugins/</code>).</li>
<li>Im Adminbereich deines Blogs das Plugin aktivieren.</li>
<li>Die Einstellung auf eure Wünsche anpassen!</li>
</ol>
<p><img class="centered" src="http://bueltge.de/wp-content/images/wp/wp-cache-inspect-options.png" alt="Screenshot der Optionen in WP 2.7" /></p>
<h3>Download:</h3>
<form class="spenden" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="amount" id="eins" value="" />
<input type="hidden" name="cmd" value="_xclick" />
<input type="hidden" name="business" value="frank@bueltge.de" />
<input type="hidden" name="item_name" value="Spende bueltge.de" />
<input type="hidden" name="no_shipping" value="1" />
<input type="hidden" name="return" value="http://bueltge.de/" />
<input type="hidden" name="cancel_return" value="http://bueltge.de/" />
<input type="hidden" name="currency_code" value="EUR" />
<input type="hidden" name="tax" value="0" />
<input type="hidden" name="bn" value="PP-DonationsBF" />
<input type="image" src="http://bueltge.de/wp-content/images/donate.png" style="border:0" name="submit" alt="Zahlen Sie mit PayPal - schnell, kostenlos und sicher!" />
</form>
<p><strong>Ist die Arbeit nicht 1 Euro wert?</strong><br />
Jede Spende wird dankbar angenommen und ermöglicht das weitere Arbeiten an freier Software.<br />
Möchtest du mehr oder anders spenden, so besuche meine <a href="http://bueltge.de/wunschliste/">Wunschliste</a>.</p>
<p>Download als zip-Datei:<br />
<a href="http://downloads.wordpress.org/plugin/wp-cache-inspect.zip">downloads.wordpress.org/plugin/wp-cache-inspect.zip</a> - 76 kByte</p>
<h3 id="historie">Historie</h3>
<ul>
<li>Grundversion stammt von <a href="http://bueltge.de/wordpress-cache-kontrollieren/479/">PJW WP Cache Inspect</a></li>
<li>0.6 - neuer Code, mehr Funktionen und optimiert für WP 2.6 &#038; WP 2.7</li>
<li>0.7 - Link zum Aktualisieren des Cache im Frontend möglich</li>
<li>0.8 - Einstellungen im Settings-Bereich, User-Einstellungen der Boxen werden gespeichert, Auslagerung CSS und JS, div. Änderungen im Code</li>
</ul>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wordpress-cache-steuern-plugin/819/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-cache-steuern-plugin/819/feed/</wfw:commentRss>
		<slash:comments>53</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wp/wp-cache-inspect-font.png" />
		<media:content url="http://bueltge.de/wp-content/images/wp/wp-cache-inspect-font.png" medium="image">
			<media:title type="html">Cache Data in Frontend</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/wp/wp-cache-inspect-options.png" medium="image">
			<media:title type="html">Screenshot der Optionen in WP 2.7</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress 2.5 Cache</title>
		<link>http://bueltge.de/wordpress-cache-optmieren/646/</link>
		<comments>http://bueltge.de/wordpress-cache-optmieren/646/#comments</comments>
		<pubDate>Sun, 27 Apr 2008 21:16:44 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[WP]]></category>
		<category><![CDATA[WP2.5]]></category>

		<guid isPermaLink="false">http://bueltge.de/wordpress-cache-optmieren/646/</guid>
		<description><![CDATA[Der WordPress eigene Cache ist keine Neuigkeit mehr, trotzdem gibt es mit der Version 2.5 einige Veränderungen. Hier will ich nicht tiefer auf Aktivierung und Nutzung des Cache eingehen, ebenso nicht auf die Nutzung der sehr vielen verschiedenen Plugins zum Thema Cache. Liegt einfach daran, dass meine Tests nicht abgeschlossen sind und es ein sehr [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignrightob" src="http://bueltge.de/wp-content/images/wordpress-logo.png" alt="WordPress Logo" /></p>
<p>Der WordPress eigene <a href="http://codex.wordpress.org/Function_Reference/WP_Cache">Cache</a> ist keine Neuigkeit mehr, trotzdem gibt es mit der Version 2.5 einige Veränderungen. Hier will ich nicht tiefer auf Aktivierung und Nutzung des Cache eingehen, ebenso nicht auf die Nutzung der sehr vielen verschiedenen Plugins zum Thema Cache. Liegt einfach daran, dass meine Tests nicht abgeschlossen sind und es ein sehr vielschichtiges Thema ist. Außerdem möchte ich dem Laien diese Nutzung in WordPress nicht empfehlen, zu viele Randbedingungen. Zum Cache und deren Optimierung habe ich schon vor einiger Zeit einige Hinweise gegeben, siehe &#8222;<a href="http://bueltge.de/wordpress-cache-kontrollieren/479/">WordPress Cache kontrollieren</a>&#8220;.</p>
<blockquote><p><strong>Cache</strong> (BE: [kaʃ], AE: [kæʃ]) bezeichnet in der EDV einen schnellen Puffer-Speicher, der in unterschiedlichen Geräten wie z. B. CPUs oder Festplatten zum Einsatz kommt.<br />
<cite><a href="http://de.wikipedia.org/wiki/Cache">Wikipedia</a></cite></p></blockquote>
<p>Aber weil immer wieder Fragen in Zusammenhang mit WP 2.5 auftauchen einige wenige nützliche Hinweise zum Cache.<span id="more-646"></span> Grundsätzlich muss man sagen, WordPress arbeitet an diesem Thema und erfüllt damit die Wünsche der Nutzer. Man muss aber auch sagen, ältere Versionen sind schneller, was aber vor allem daran liegt, dass WordPress unaufhaltsam wächst. Das gilt nicht nur für die Nutzerzahlen, sondern auch für die Funktionen der Applikation.</p>
<p>Ebenso ist aktuell der Stand so, dass die meisten Plugins für WordPress einen besseren Cache anbieten, als es der hauseigen ist, auch der in WP 2.5. Nun aber zum internen Cache, diesen zu nutzen ist ratsam!</p>
<p>Mit der neuen Version 2.5 wurde der Cache verändert, es wird nun der Arbeitsspeicher genutzt. Der Objekt-Cache, welcher sich in der <code>/wp-includes/cache.php</code> befindet, nutzt nicht mehr das Dateisystem. Die Aktivierung des Cache geschieht durch das Hinterlegen der Konstanten in der <code>wp-config.php</code>.</p>
<pre><code>
define('ENABLE_CACHE', true); // Cache on
define('CACHE_EXPIRATION_TIME', 604800); // Time in seconds, default is 900s
</code></pre>
<p>Im weiteren empfiehlt es sich das PHP Memory Limit zu definieren, zu erhöhen. Im Standard hat WordPress diesen in der Version 2.5 auf 32 MByte gesetzt, siehe <code>wp-settings.php</code>. Um diesen Wert zu ändern, muss man aber nicht in die Datei eingreifen, es genügt das Hinterlegen der entsprechenden Konstante in der <code>wp-config.php</code>.</p>
<pre><code>
define('WP_MEMORY_LIMIT', '64M');
</code></pre>
<p>Ein Wert von 32 MByte sollte recht gut sein, das eine oder andere Experiment gibt eventuell Aufschluss.</p>
<p>Zur Überwachung und Optimierung des Cache empfiehlt sich auch weiterhin das Plugin &#8222;<a href="http://bueltge.de/wordpress-cache-kontrollieren/479/">PJW WP Cache Inspect</a>&#8220;, welches von <a href="http://blog.ftwr.co.uk/wordpress/wp-cache-inspect/">Peter Westwood</a> ist und durch mich ein wenig angepasst wurde, dabei habe ich Veränderungen zum Leeren des Cache und zur Funktion unter WordPress 2.5 vorgenommen - näheres im Artikel &#8222;<a href="http://bueltge.de/wordpress-cache-kontrollieren/479/">WordPress Cache kontrollieren</a>&#8220;. Dort steht auch das Plugin zum Download bereit.</p>
<p>Sollte es aber doch zu Problemen mit der neuen Cache-Version kommen, dann kann man mittels Plugin &#8222;<a href="http://neosmart.net/blog/2008/file-based-extension-to-the-wordpress-object-cache/">File-Based Object Cache Extension</a>&#8220; den alten dateibasierenden Cache wieder aktivieren. Es ist aber ratsam, den aktuellen Cache zu nutzen. Sollte es Probleme mit dem Webspace-Provider geben, so ist eine Zusammenarbeit ratsam bevor man den Cache der Vorgängerversion wieder aktiviert, denn die Last kann doch recht hoch sein. Alternativ kann man mit den verschiedensten Plugins, wenn es tatsächlich so viele Zugriffe sind, die Last senken, was vor allem für die CPU-Last des Servers gilt.</p>
<h3>Weiterführende Links</h3>
<ul>
<li><a href="http://dougal.gunters.org/blog/2006/07/21/using-the-wordpress-object-cache">Nutzung in eigenen Funktionen</a></li>
<li><a href="http://codex.wordpress.org/Function_Reference/WP_Cache">Doku im Codex</a></li>
</ul>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wordpress-cache-optmieren/646/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-cache-optmieren/646/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wordpress-logo.png" />
		<media:content url="http://bueltge.de/wp-content/images/wordpress-logo.png" medium="image">
			<media:title type="html">WordPress Logo</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WP Super Cache Plugin beschleunigen</title>
		<link>http://bueltge.de/wp-super-cache-plugin-beschleunigen/622/</link>
		<comments>http://bueltge.de/wp-super-cache-plugin-beschleunigen/622/#comments</comments>
		<pubDate>Mon, 31 Mar 2008 13:38:53 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/wp-super-cache-plugin-beschleunigen/622/</guid>
		<description><![CDATA[Das Plugin WP Super Cache genießt einen guten Ruf und die Technologie und Entwicklung wird bestens gepflegt. Da ich aktuell einige Versuche gemacht hatte, kam mir ein interessanter Artikel unter, mit dessen Hack man die Geschwindigkeit des Plugins noch beschleunigen kann. Die Ergebnisse des Test lassen sich in einem weiteren Artikel des Autors vergleichen. Der [...]]]></description>
			<content:encoded><![CDATA[<p>Das Plugin <a href="http://ocaoimh.ie/wp-super-cache/">WP Super Cache</a> genießt einen guten Ruf und die Technologie und Entwicklung wird bestens gepflegt. Da ich aktuell einige Versuche gemacht hatte, kam mir ein <a href="http://www.askapache.com/htaccess/hacking-wp-super-cache-for-speed.html">interessanter Artikel</a> unter, mit dessen Hack man die Geschwindigkeit des Plugins noch beschleunigen kann.<br />
Die Ergebnisse des Test lassen sich in einem <a href="http://www.askapache.com/wordpress/wp-cache-speed-hack.html">weiteren Artikel</a> des Autors vergleichen. Der Test wurde mit dem Firefox und dem <a href="http://developer.yahoo.com/yslow/">Add-on YSlow</a> durchgeführt.<span id="more-622"></span></p>
<p>Damit will ich nicht jedem empfehlen, das Plugin zu nutzen! Die Entscheidung basiert auf vielen Überlegungen und lohnt nicht bei verhältnismäßig niedrigen Besucherzahlen.</p>
<p>Anmerkend muss man ebenso sagen, dass WordPress unter PHP 5.3* wesentlich <a href="http://ckon.wordpress.com/2008/03/28/php-53/">zügiger unterwegs ist</a>. Es wird also Zeit, dass die Webspace-Anbieter endlich zum Zuge kommen und updaten, 4.* ist Altlast.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wp-super-cache-plugin-beschleunigen/622/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wp-super-cache-plugin-beschleunigen/622/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress Cache kontrollieren</title>
		<link>http://bueltge.de/wordpress-cache-kontrollieren/479/</link>
		<comments>http://bueltge.de/wordpress-cache-kontrollieren/479/#comments</comments>
		<pubDate>Wed, 18 Jul 2007 09:24:11 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/wordpress-cache-kontrollieren/479/</guid>
		<description><![CDATA[Gunnar Tillmann hat die WordPress-Cache-Funktion vor einiger Zeit sehr schön vorgestellt, wobei er auf die Möglichkeiten für Entwickler eingeht, das Einbinden in eigene Lösungen - Plugins oder Templates beispielsweise. Das gleiche Thema hat Michael auch nochmal aufgegriffen und damit wurde es dann wesentlich populärer - Michael hat wohl einen großen Leserstamm. Die Cache-Funktion wird aktiviert, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.gunnart.de/tipps-und-tricks/blog-tuning-teil2-wordpress-cache-nutzen/">Gunnar Tillmann</a> hat die WordPress-Cache-Funktion vor einiger Zeit sehr schön vorgestellt, wobei er auf die Möglichkeiten für Entwickler eingeht, das Einbinden in eigene Lösungen - Plugins oder Templates beispielsweise.</p>
<p>Das gleiche Thema hat <a href="http://sw-guide.de/2007-07/bessere-blog-performance-dank-wordpress-internen-cache/">Michael</a> auch nochmal aufgegriffen und damit wurde es dann wesentlich populärer - <a href="http://sw-guide.de/2007-07/bessere-blog-performance-dank-wordpress-internen-cache/">Michael</a> hat wohl einen großen Leserstamm. <img src='http://bueltge.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Die Cache-Funktion wird aktiviert, in dem man zwei Zeilen der <em>wp-config.php</em> hinzufügt. Der Ordner <em>wp-content</em> muss mit Schreibrechten ausgestattet werden, damit das nötige Verzeichnis <em>cache</em> automatisch angelegt werden kann, ansonsten händisch anlegen.</p>
<pre><code>
define('ENABLE_CACHE', true); // Cache on
define('CACHE_EXPIRATION_TIME', 604800); // Time in seconds, default is 900s
</code></pre>
<p><strong>Hinweis:</strong> Seit WordPress Version 2.5 ist dies nicht mehr gültig, lese auch einen neueren Beitrag dazu bei mir: <a href="http://bueltge.de/wordpress-cache-nutzen/999/">WordPress Cache nutzen</a></p>
<p>Nun hat der Cache sicher hervorragende Eigenschaften, wie aber auch Michael schon berichtet - </p>
<blockquote><p>nur meist denkt man in diesem Moment nie an den Cache (Murphy lässt grüßen <img src='http://bueltge.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p></blockquote>
<p>Ebenso hat WordPress von Haus aus keine Überprüfung des Cache, was passiert also wirklich und wie kann ich ihn gegebenenfalls leeren? Natürlich hat sich auch dazu schon ein findiger Kopf gefunden und ein Plugin erstellt. Das Plugin „<a href="http://blog.ftwr.co.uk/wordpress/wp-cache-inspect/">PJW WP Cache Inspect</a>“ gibt eine Ausgabe alle relevanten Daten im Frontend aus, so dass der Admin, insofern er im Backend angemeldet ist, sich über die aktuelle Cache-Situation auf der entsprechenden Seite informieren kann. Der nicht geloggte User bekommt davon nichts mit.</p>
<p>Das Plugin geht mir allerdings nicht weit genug, denn es gibt einige Anwendungen, bei denen es sinnvoll ist, den Cache zu leeren. Dazu zählen zum Beispiel, das Löschen von Kommentaren, das Editieren von Kommentaren und das Veröffentlichen von Seiten und Artikeln.<br />
Damit diese Funktionalität gegeben ist, habe ich das Plugin um wenige Zeilen erweitert und nun muss man sich darum nicht mehr kümmern. Der Download ist im Anschluss zu finden. zusätzlich kann im Bereich Verwalten des Backend den Cache mit einem Klick löschen.</p>
<h3>PHP Memory Limit</h3>
<p>Es empfiehlt sich den PHP Memory Limit zu setzen, 32MByte sollten ein guter Wert sein, auch diese Konstanten-Definition gehört in die <code>wp-config.php</code>.</p>
<pre><code>
define('WP_MEMORY_LIMIT', '32M');
</code></pre>
<h3>Anforderungen</h3>
<p>Das Plugin arbeitet mit WP 2.0 und höher, inklusive 2.5 ab Version 0.52 des Plugins.</p>
<h3>Installation</h3>
<ol>
<li>Cache aktivieren, wie oben beschrieben.</li>
<li>Plugin downloaden und die zip-Datei lokal entpacken.</li>
<li>Die PHP-Datei in euren WordPress-Plugin-Ordner kopieren (/wp-content/plugins/).</li>
<li>Im Adminbereich deines Blogs das Plugin aktivieren.</li>
<li>Die Ausgabe im Frontend erscheint, wenn man als Admin eingeloggt ist!</li>
</ol>
<h3>Download:</h3>
<form class="spenden" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="amount" id="eins" value="" />
<input type="hidden" name="cmd" value="_xclick" />
<input type="hidden" name="business" value="frank@bueltge.de" />
<input type="hidden" name="item_name" value="Spende bueltge.de" />
<input type="hidden" name="no_shipping" value="1" />
<input type="hidden" name="return" value="http://bueltge.de/" />
<input type="hidden" name="cancel_return" value="http://bueltge.de/" />
<input type="hidden" name="currency_code" value="EUR" />
<input type="hidden" name="tax" value="0" />
<input type="hidden" name="bn" value="PP-DonationsBF" />
<input type="image" src="http://bueltge.de/wp-content/images/donate.png" style="border:0" name="submit" alt="Zahlen Sie mit PayPal - schnell, kostenlos und sicher!" />
</form>
<p><strong>Ist die Arbeit nicht 1 Euro wert?</strong><br />
Jede Spende wird dankbar angenommen und ermöglicht das weitere Arbeiten an freier Software.<br />
Möchtest du mehr oder anders spenden, so besuche meine <a href="http://bueltge.de/wunschliste/">Wunschliste</a>.</p>
<p>Download als php-Datei:<br />
<a href="http://bueltge.de/wp-content/download/wp/pjw-wp-cache-inspect.zip">pjw-wp-cache-inspect.zip</a> - 1 KByte</p>
<h3>Hinweis</h3>
<p>Das Plugin wurde von mir komplett neu aufgesetzt und erstellt - nähere Informationen dazu gibt es im entsprechenden Artikel: <a href="http://bueltge.de/wordpress-cache-steuern-plugin/819/">WP Cache steuern (Plugin)</a>.</p>
<h3>Historie</h3>
<ul>
<li>0.51 - Hinzufügen der Fkt. zum Löschen des Cache bei: Beitrag o. Seite veröffentlichen, Kommentar editieren, Kommentar löschen, Status von Privat zu öffentlich</li>
<li>0.52 - WP 2.5 tauglich, nutzbar auch für < 2.5, valider Code im Frontend</li>
<li><strong>keine Updates mehr</strong> - <a href="http://bueltge.de/wordpress-cache-steuern-plugin/819/">neues Plugin mit gleicher Hintergrundidee</a></li>
</ul>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wordpress-cache-kontrollieren/479/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-cache-kontrollieren/479/feed/</wfw:commentRss>
		<slash:comments>31</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WP - Performance von WP-Cache steigern</title>
		<link>http://bueltge.de/wp-performance-von-wp-cache-steigern/168/</link>
		<comments>http://bueltge.de/wp-performance-von-wp-cache-steigern/168/#comments</comments>
		<pubDate>Tue, 09 May 2006 08:33:00 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://www.bueltge.de/?p=168</guid>
		<description><![CDATA[Um die Performance von WordPress zu verbessern gibt es eine Reihe Ratschläge und einige Plugins. Die meisten Plugins bauen auf einer Cache-Lösung auf. Ich nutze seit August 2005 das Plugin <a href="http://mnm.uib.es/gallir/wp-cache-2/">WP-Cach</a>e und habe ausgezeichnete Erfahrungen damit gemacht. Wenn die Beiträge allerdings viel kommentiert werden, funktioniert diese Lösung nicht ganz wie gewünscht, da der Speicher (Cache) immer neu gepuffert wird, wenn es Kommentare gibt. Will man dieses Manko beim genannten Plugin beseitigen, gibt es eine einfache kleine Lösung die ein wenig in den Code des Plugins eingreift.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://bueltge.de/wp-content/images/server.jpg" width="200" height="157" alt="Serverbild" />Um die Performance von WordPress zu verbessern gibt es eine Reihe Ratschläge und einige Plugins. Die meisten Plugins bauen auf einer Cache-Lösung auf. Ich nutze seit August 2005 das Plugin <a href="http://mnm.uib.es/gallir/wp-cache-2/">WP-Cach</a>e und habe ausgezeichnete Erfahrungen damit gemacht. Wenn die Beiträge allerdings viel kommentiert werden, funktioniert diese Lösung nicht ganz wie gewünscht, da der Speicher (Cache) immer neu gepuffert wird, wenn es Kommentare gibt. Will man dieses Manko beim genannten Plugin beseitigen, gibt es eine einfache kleine Lösung die ein wenig in den Code des Plugins eingreift.</p>
<p>WP-Cache Hack:</p>
<ol>
<li>Natürlich das Plugin installieren - <a href="http://mnm.uib.es/gallir/wp-cache-2/">WP Cache 2</a></li>
<li>Datei /plugins/wp-cache/wp-cache-phase2.php im Editor öffnen</li>
<li>Zeile 23 auskommentieren bzw. löschen
<pre><code>
add_action('comment_post', 'wp_cache_get_postid_from_comment', 0);
</code></pre>
</li>
<li>Datei wieder hoch laden und das Plugin aktivieren</li>
<li>Die Einstellungen des Plugins ändern - die Cachezeit größer 7200s setzen</li>
</ol>
<p>Die Entfernung des Codes in Punkt 3 stellt sicher, dass nicht bei jedem Kommentar die Seite neu gepuffert wird. Punkt 5 sorgt für eine enorme Entlastung der Datenbankabfrage (SQL-Query), trotzdem werden die Beiträge nach der Zeit neu gepuffert.</p>
<h3>Weiterführende Links:</h3>
<ul>
<li><a href="http://asymptomatic.net/2006/05/02/2327/high-performance-wordpress/">High Performance WordPress</a></li>
<li><a href="http://mnm.uib.es/gallir/wp-cache-2/">WP Cache 2 Plugin</a></li>
</ul>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wp-performance-von-wp-cache-steigern/168/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wp-performance-von-wp-cache-steigern/168/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/server.jpg" />
		<media:content url="http://bueltge.de/wp-content/images/server.jpg" medium="image">
			<media:title type="html">Serverbild</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
	</channel>
</rss>

