博主最近剛好碰到客戶的網(wǎng)站首頁(yè)打開(kāi)慢,2s左右,這里的速度值得是,F(xiàn)12打開(kāi)開(kāi)發(fā)者工具選擇Network查看對(duì)應(yīng)的域名加載速度,如下圖Waiting花了1.95s,正常頁(yè)面這塊速度一般是1s內(nèi),現(xiàn)在的速度肯定是不及格的,那么有沒(méi)辦法優(yōu)化下呢,下面一起來(lái)研究下。

網(wǎng)頁(yè)速度影響因素

首先說(shuō)明這里講的網(wǎng)頁(yè)速度是排除掉靜態(tài)資源加載的,這里的速度是用戶訪問(wèn)域名然后程序響應(yīng)回來(lái)所花的時(shí)間,主要影響因素有以下幾點(diǎn):

1、服務(wù)器配置

配置高的服務(wù)器響應(yīng)速度差別還是很明顯的,但是一般情況下咱們的數(shù)據(jù)量不是超大,例如幾萬(wàn),那么區(qū)別不明顯。

2、CMS程序

這個(gè)可能是影響這個(gè)速度最明顯的地方,pbootcms目前發(fā)現(xiàn)的是如果數(shù)據(jù)量大、內(nèi)容自定義字段過(guò)多、頁(yè)面中判斷層級(jí)大于2級(jí)等都容易造成網(wǎng)頁(yè)響應(yīng)速度下降明顯。

3、數(shù)據(jù)庫(kù)影響

pbootcms默認(rèn)使用的是sqlite,如果數(shù)據(jù)超過(guò)1w建議換成mysql。如果說(shuō)一開(kāi)始確定好了采集方向,那提前使用mysql會(huì)節(jié)省很多頭發(fā)。

pbootcms速度優(yōu)化方法

1、減少if層級(jí),控制在2層

2、數(shù)據(jù)量和字段數(shù)一般沒(méi)法控制,看具體項(xiàng)目,所以得考慮前臺(tái)調(diào)用代碼去優(yōu)化

3、頁(yè)面純靜態(tài)化,目前還沒(méi)有此功能暫不考慮

下面針對(duì)前臺(tái)調(diào)用代碼進(jìn)行分析下:

通過(guò)查找手冊(cè)公共標(biāo)簽-其他格式化標(biāo)簽發(fā)現(xiàn)有個(gè)lfield參數(shù),經(jīng)過(guò)測(cè)試確實(shí)效果明顯!

 

使用案例,這些因?yàn)橹恍枰{(diào)用title和date所以做了限制查詢這兩個(gè)字段即可。

{pbootcms:list?scode=2?num=8?order='date?desc'?lfield=title,date}
<li?class="flex">
????<a?href="[list:link]"?class="tit?elp">[list:title]</a>
????<div?class="date">[list:date?style=Y-m-d]</div>
</li>
{/pbootcms:list}

博主剛提到的那個(gè)站通過(guò)此方式首頁(yè)響應(yīng)速度從2s左右控制到了1s以內(nèi),基本解決了問(wèn)題。

 

性能優(yōu)化原理解析:

通過(guò)查看數(shù)據(jù)庫(kù)查詢語(yǔ)句發(fā)現(xiàn)pbootcms對(duì)于列表數(shù)據(jù)默認(rèn)是查詢內(nèi)容主表ay_content和附表ay_content_ext的全部字段,這就導(dǎo)致了數(shù)據(jù)多的時(shí)候性能明顯下降,特別注意的是附表是內(nèi)容新增字段存放位置,這里就解釋了為什么字段新增過(guò)多導(dǎo)致卡的原因了。

因此核心就是在于默認(rèn)得限制字段調(diào)用,所以博主建議列表內(nèi)容調(diào)用的時(shí)候養(yǎng)成默認(rèn)增加lfield屬性限制字段使用,同時(shí)也建議避免content在列表內(nèi)容中調(diào)用,因?yàn)閏ontent字段數(shù)據(jù)一般都比較多,可以使用description字段替代。

這里提供個(gè)列表內(nèi)容調(diào)用模板:

{pboot:list?scode=20?num=20?order=date?lfield=title,ico,date,description}
<div?class="col-12?col-lg-6?mb-3?wow?fadeInUp"?data-wow-delay="500ms">
????<div?class="media?mb-3">
????????<div?class="media-body">
????????????<h5><a?href="[list:link]"?title="[list:title]">[list:title?lencn=20]</a></h5>
????????????<p><a?href="[list:link]"?class="text-secondary?lh-2">[list:description?len=50]?[list:date?style=Y-m-d]</a></p>
????????</div>
????</div>
</div>
{/pboot:list}

//?lfield=title,ico,date,description?代表限制調(diào)用字段title,ico,date,description
//?[list:description?len=50]?使用description來(lái)替代content

以上就是關(guān)于pbootcms性能優(yōu)化研究介紹,如果你有相關(guān)的建議可以評(píng)論或者加群交流。