程序&服務器
首先說明這里講的網頁速度是排除掉靜態資源加載的,這里的速度是用戶訪問域名然后程序響應回來所花的時間,主要影響因素有以下幾點:
1、服務器配置
配置高的服務器響應速度差別還是很明顯的,但是一般情況下咱們的數據量不是超大,例如幾萬,那么區別不明顯。
2、CMS程序
這個可能是影響這個速度最明顯的地方,pbootcms目前發現的是如果數據量大、內容自定義字段過多、頁面中判斷層級大于2級等都容易造成網頁響應速度下降明顯。
3、數據庫影響
pbootcms默認使用的是sqlite,如果數據超過1w建議換成mysql。如果說一開始確定好了采集方向,那提前使用mysql會節省很多頭發。
優化方案
1、減少if層級,控制在2層
2、數據量和字段數一般沒法控制,看具體項目,所以得考慮前臺調用代碼去優化
3、頁面純靜態化,目前還沒有此功能暫不考慮
下面針對前臺調用代碼進行分析下:
通過查找手冊公共標簽-其他格式化標簽發現有個lfield參數,經過測試確實效果明顯!在公共標簽,其他格式化標簽中有如下一段:
使用案例,這些因為只需要調用title和date所以做了限制查詢這兩個字段即可。lfield="a,b" (V2.0.5新增)限制列表數據查詢字段,提高大數據性能,如lfield="title,content"
{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}
通過查看數據庫查詢語句發現pbootcms對于列表數據默認是查詢內容主表ay_content和附表ay_content_ext的全部字段,這就導致了數據多的時候性能明顯下降,特別注意的是附表是內容新增字段存放位置,這里就解釋了為什么字段新增過多導致卡的原因了。
因此核心就是在于默認得限制字段調用,所以博主建議列表內容調用的時候養成默認增加lfield屬性限制字段使用,同時也建議避免content在列表內容中調用,因為content字段數據一般都比較多,可以使用description字段替代。
這里提供個列表內容調用模板:
{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 代表限制調用字段title,ico,date,description
// [list:description len=50] 使用description來替代content