简介在优化大型WordPress网站的性能时,我总是考虑缓存网站的某些部分,大多数(当然)是那些需要大量查询/计算的部分。
对于WordPress菜单的缓存,我通常使用一个类似于我发布作为答案的函数here.
此函数检查是否存在包含菜单HTML的瞬态,如果存在,则从瞬态传递HTML。如果不存在,则菜单为build and the transient set。为了保持清洁,我还wp_update_nav_menu
保存菜单后立即清除瞬态,始终保持最新版本可用。
到目前为止还不错
这项技术工作得非常好,可以极大地提高性能,尤其是在菜单包含大量条目的情况下。
问题
现在,在开发这个方法几个月后,我遇到了一个问题,并且因为一开始没有考虑它而感到愚蠢。
不同页面上的菜单不同,具体取决于页面的名称,wp_nav_menu
提供不同的HTML代码。current-menu-item
这样的课程当然也适用于menuitems。
因此,问题是,缓存菜单并为每个特定页面提供正确类的最佳方法是什么?
我考虑了两个版本,它们通过jQuery添加类,这会导致客户端上的计算量增加,从而缓存每个版本的菜单ID
另一方面,如果页面有很多菜单,会导致相当多的数据库负载,但是,我倾向于使用第二个选项。您是否担心将这么多HTML缓存为瞬态?