Skip to content

78 craft cms之performance

Jinxin Chen edited this page Dec 11, 2019 · 1 revision

网站效能低下的原因

如果网站的Navigation是根于structure结构的entities生成,生成时又多次进行数据库查询,则整个Navigation的生成会产生多次数据库查询。

另外因为每一个页面都包含Navigation,所以当用户访问不同页面时,Navigation都会重新生成一次。

如何改善?

最优的改善方案是利用craft cms的template cache功能,可以用最简单的方式大幅提升性能:

{% cache %}
    {% for block in entry.myMatrixField %}
        <p>{{ block.text }}</p>
    {% endfor %}
{% endcache %}

Craft cms的template cahce,是把一个动态的block输出的html保存起来,在第一次生成html以后,后续如果block中的内容没有做改变,Craft 会直接将保存好的html直接输出而不用重复做复杂的计算

template cache存储在db的templatecaches, templatecacheelements, templatecachecriteria 3个表中,且没有办法配置存储到其他的媒介比如内存等。

开启devModd查看改善细节

在craft/config/general.php中配置devMode=true,会在console中输出调试信息,打开chrome的开发者模式,进入console页签就可以看到。

在某个项目中,某个页面的query次数在添加cache前后的变化如下:

开启devMode之后Craft做了哪些改变,可以参照:

重构代码

重构代码,优化Navigation生成的方式也是一种方法,但是需要额外耗费一些时间来优化。

参考:

Clone this wiki locally