-
Notifications
You must be signed in to change notification settings - Fork 0
78 craft cms之performance
如果网站的Navigation是根于structure结构的entities生成,生成时又多次进行数据库查询,则整个Navigation的生成会产生多次数据库查询。
另外因为每一个页面都包含Navigation,所以当用户访问不同页面时,Navigation都会重新生成一次。
{% 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个表中,且没有办法配置存储到其他的媒介比如内存等。
在craft/config/general.php中配置devMode=true,会在console中输出调试信息,打开chrome的开发者模式,进入console页签就可以看到。
在某个项目中,某个页面的query次数在添加cache前后的变化如下:
开启devMode之后Craft做了哪些改变,可以参照:
重构代码,优化Navigation生成的方式也是一种方法,但是需要额外耗费一些时间来优化。
参考:
-
[What are the cache options available to a Craft installation?](https://craftcms.stackexchange.com/questions/13382/what-are-the-cache-options-available-to-a-craft-installation/13383#13383)
-
[The Craft {% cache %} Tag In-Depth](https://nystudio107.com/blog/the-craft-cache-tag-in-depth)
-
[Performance optimization in Craft CMS](http://www.patpohler.com/performance-optimization-craft-cms/)