1. 首页
  2. css

CSSWordPress片段缓存重温

以下是瑞安·伯内特的客串帖子。正如你在下面看到的,Ryan正在开发一个WordPress网站,该网站使用了一个插件,该插件使用Instagram API来下拉照片。他以一种有点不标准的方式使用它,导致了大量的请求和一个非常慢的站点。在探索不同的解决方案时,他遇到了碎片缓存。但不幸的是,他发现的一些信息已经过时,所以,像一个好的开发人员一样,他更新了它。以下是背景和旅程。
我们都知道web性能很重要。然而,对于构建自定义WordPress主题的开发人员来说,在实际编写代码时,它的优先级要低得多。在页面上呈现元素的代码通常使用可用的函数以最简单、最友好的方式编写。这就产生了易于创建、读取和维护的代码。这也会导致元素的呈现过程非常低效,并伴随着无关的循环和数据库查询。
额外的几毫秒就开始累积了。再加上网站流量的增加,可能会出现严重的性能问题。
许多真正聪明的人已经在这个问题上动了脑筋。WordPress社区已经产生了一些很棒的缓存插件。W3 Total Cache就是其中之一。我爱他们,经常使用他们,但有时我不需要所有的权力。我可能希望避免配置或使用不利于缓存的元素。把插件控制在最低限度也很好,这样可以避免以后的维护麻烦。我想用很少的代码来缓存页面上的一些元素,这些元素太笨拙了,每次加载都无法呈现。
Fragment Caching
当WordPress页面加载时,会处理PHP并查询MySQL数据库。有时,一块代码会进行许多查询,并需要一段时间才能运行。片段缓存获取代码块的输出,并将其存储一段预定的时间。当代码运行时,只要没有超过时间限制,就会忽略该块,并返回存储的输出并打印到页面上。
片段缓存并不是什么新鲜事。WordPress核心开发人员marcjaquith写了一篇关于片段缓存的文章。后来我发现了一个要点,将Jaquith的类简化为一个函数。在2.5之前的WordPress版本中,WPu Cache对象可以像Jaquith的例子那样用于持久缓存,或者持续时间超过一个页面加载的缓存。transientsapi可以创建具有方便的过期特性的持久数据库对象。我的片段缓存代码段使用此方法存储片段。
以下是可以包含在函数.php文件,允许将任何输出缓存为片段。这是代码。
function fragment_cache($key, $ttl, $function) {if ( is_user_logged_in() ) = get_transient($key);if ( empty($output) )>
The function takes three arguments:
– Key: a simple string which identifies the fragment. Notice that the function adds a prefix to avoid colliding with other transients. You can alter the prefix by editing the function or adding a filter that matches the \”fragmentcacheprefix\” tag.
– Time to live: a time in seconds for the cache to live. I usually make use of time constants. For example, DAYINSECONDS is 86400, the number of seconds in a day. This helps those of us who are too lazy for some simple math.
– Function: the function which creates the output. This can be anything as the examples in this post show.Usage Examples
Using fragment caching is as easy as wrapping some HTML and PHP in function.
Here\”s some code that a developer might write on a WordPress site or application.
Here\”s some HTML. = get_posts($args);foreach ( $posts as $p ) {echo \”\”;echo get_post_meta($p,\”some_meta\”,true);echo \”\”;}?>The PHP in this block runs and executes queries with every page load. 🙁
这是使用片段缓存片段实现的相同代码。注意,我们使用的是HTML和PHP,它被函数捕获并缓存。
p>让我们回顾一下函数的三个参数:
ul>li>一个标记来表示缓存。给你个提示。如果每页的代码不同,请将post ID连接到标记中,以便为每页创建单独的缓存。如果主循环被分段缓存,这一点很重要。超时。我通常使用WordPress的时间常数,但是可以使用任何以秒为单位的时间。输出代码本身。注意,它被保存在一个函数中。此函数被传递到片段缓存函数中。这是对的,您可以在PHP中将函数作为参数传递。

CSSWordPress片段缓存重温 为WP2原创文章,链接:https://www.wp2.cn/css/csswordpress%e7%89%87%e6%ae%b5%e7%bc%93%e5%ad%98%e9%87%8d%e6%b8%a9/