我正试图想出一种战略性的方法来收集大量的用户元数据(并输出到屏幕上),同时保持低数据库查询量。有些页面(如主页、单页和类别页面)在不到半秒钟的时间内加载了40-60个查询。其他包含大量usermeta的页面在5-6秒内加载200-220个查询。
是否有“最佳实践”方法可以在网站加载之前(或网站首次加载时)以某种方式提取所有用户数据,然后为网站上所有其他基于用户的查询利用该信息(即基于用户ID的多维数组)?信息是否会在访问时保存(缓存在浏览器上),或者是否有必要使用瞬态api?
有什么想法吗?
我正试图想出一种战略性的方法来收集大量的用户元数据(并输出到屏幕上),同时保持低数据库查询量。有些页面(如主页、单页和类别页面)在不到半秒钟的时间内加载了40-60个查询。其他包含大量usermeta的页面在5-6秒内加载200-220个查询。
是否有“最佳实践”方法可以在网站加载之前(或网站首次加载时)以某种方式提取所有用户数据,然后为网站上所有其他基于用户的查询利用该信息(即基于用户ID的多维数组)?信息是否会在访问时保存(缓存在浏览器上),或者是否有必要使用瞬态api?
有什么想法吗?
你在这里做了很多陈述,让我们一点一点地看一下。
同时保持较低的数据库查询
查询的数量不是一个直接的问题,它们所花费的时间是一个问题。一个非常慢的查询可能比数百个非常快的查询花费更多的时间。
网站加载前(或网站首次加载时)
由于WP是PHP应用程序,所以每个加载都包括整个周期,并且不是持久的。没有“第一次”,因为每次加载都是从零开始的。唯一的持久性部分是保存到数据库或其他文件中的部分。
信息是否会在访问时保存(缓存在浏览器上),或者是否有必要使用瞬态api?
浏览器缓存虽然很重要,但对提高网站本身的性能并没有什么帮助。瞬态恰恰是一种适合此类用例的持久性存储。
然而,与性能任务一样,如果不分析缓慢的操作,就很难推荐任何东西。很容易对性能低下的原因做出错误的假设,并浪费时间试图解决这些问题。
我有一个简单的循环,它通过类别street-style:$street_style_tags = array( \'category_name\' => \'street-style\', \'posts_per_page\' => 25, \'post_type\' => \'post\', \'post_status\' => \'publish\', \'orderby\' => \'date\', \'order\' =