我一直在问这个问题很长一段时间。也许有人已经做了一些挖掘(或参与WP)来了解答案。
我所说的是在页面加载的持续时间内,在PHP变量中存储来自WP函数的对象,例如:避免必须为同一结果集查询数据库两次。
我不意味着在预渲染动态网页的意义上进行缓存,并将其保存为HTML格式,以便更快地进行检索。
在一个页面加载期间,可能会在主题中多次使用相当多的“模板标签”(Wordpress函数)。当主题或插件调用这样的函数时,WP每次都会运行数据库查询以检索必要的数据,并且每次都会解析这些数据以返回所需的对象吗?
或者,该函数在第一次运行时是否将其结果存储在PHP变量中,并在查询数据库或解析之前检查它是否已存在?
示例包括:
wp_get_nav_menu_object()
wp_get_nav_menu_items()
wp_list_categories()
wp_tag_cloud()
wp_list_authors()
...还有bloginfo()
或wp_nav_menu()
等重要功能。
当然,缓存任何和所有查询(如与帖子相关的查询)都没有多大意义。但是对于上面的例子(还有更多),我相信它会。
到目前为止,当一个主题需要在页面上多次调用相同的函数时,我自己一直在缓存这些泛型函数,通过编写我自己的函数或类以及在全局变量或静态变量中缓存。我不明白为什么我应该通过多次运行完全相同的通用查询来添加到服务器负载。
这种缓存在Wordpress中是否已存在?
答案 0 :(得分:1)
是的,对于某些查询和功能。见WP Object Cache。相关功能包括wp_cache_get
,wp_cache_set
,wp_cache_add
和wp_cache_delete
。您可以通过WordPress代码找到在许多地方使用的这些函数,以完全按照您的描述进行操作。