何时以及如何使用瞬变或对象缓存有点棘手,取决于站点。以下是故障:
不使用持久对象缓存(如memcached)时:
瞬态存储在数据库中,对象缓存中的对象仅在页面请求期间缓存使用持久对象缓存(如memcached)时:
瞬态存储在对象缓存中,对象缓存中的对象缓存在持久对象缓存中,因此跨页面请求可用是的,如果使用memcached,瞬态可以让事情变得更快。然而,如果您知道您从一开始就在使用memcached,那么您可以直接使用对象缓存,而不是使用临时缓存。
因此,正确的使用时间是:
对于公开发布的代码:
当您必须存储需要一段时间才能生成/检索的内容,并且可以在瞬态过期时重新生成或检索这些内容时,请使用瞬态。因为这可能存储在数据库中,所以无论如何不要将其用于必须从数据库中获取的内容。您节省的时间很少,即使查询是一个包含大量连接之类的大型查询。这要依靠数据库的情报。而是优化查询。
使用对象缓存存储可能经常需要的大型查询的单个结果(例如,帖子或用户),甚至可能在同一页面运行期间。如果这是您(自定义)控制的自定义站点的自定义代码,并且您知道它使用的是memcached,那么瞬态和对象缓存基本上是一样的,界面略有不同。所以本质上你根本不需要使用瞬变。在这种情况下,wp\\u cache\\u set和wp\\u cache\\u可以很好地工作,并且不会增加少量的开销。
对于多站点,对象缓存具有“全局组”的优势,这些组是特定的组(wp\\u cache\\u set的第三个参数),它们被认为是整个站点网络的全局组。您可以使用wp\\u cache\\u add\\u global\\u groups()将组添加到全局分组。
例如,用户在多站点中全局分组,因为用户表是共享的。因此,这提供了性能加速,因为加载到一个站点上的用户将被放入持久对象缓存中,由用户id设置密钥,并立即在内存缓存中对系统上的所有其他站点可用。换句话说,它们是全球性的。这可以显著提高性能,并且如果您需要网络范围的数据,就不必经常切换到博客。例如,一个最新的帖子插件可以使用全局分组将最新的帖子存储在对象缓存中,然后网络上的每个站点都可以立即知道它,而无需搜索,因为它们正在从共享内存缓存中提取信息。
TL;DR:您的工作方式在很大程度上取决于您的特定用例,以及您是否计划将代码提供给公众,而公众可能不会共享您的特定设置。