經(jīng)常會有用戶過來咨詢百度小程序頁面質(zhì)量的問題,比較常見的就是空短頁、標(biāo)題低質(zhì)等問題,其實這個主要是由于加載時間沒有達到百度的要求,百度對于小程序首屏渲染有著嚴(yán)格的要求,需要在1.5秒
內(nèi)完成渲染,以我們的JustWeapp小程序為例,JustWeapp小程序本身渲染需要耗時大概0.3秒
的樣子,所以剩下給接口請求響應(yīng)時間只有1.2秒
了。
具體規(guī)則說明參考:https://smartprogram.baidu.com/docs/operations/flow/configurable/enterprise_qualitystandard/
由于小程序是采用前后端數(shù)據(jù)分離
的方式開發(fā),如果接口未在規(guī)定時間內(nèi)返回數(shù)據(jù),那么頁面就沒有內(nèi)容可以展示,此時百度抓取到的就是一個空的頁面,所以就導(dǎo)致上面反饋的這些問題。
如果對WordPress比較了解的用戶應(yīng)該清楚,如果不做任何優(yōu)化,安裝的插件不多、文章幾百篇的情況下,請求時間大概會在1秒左右,好一點的可以做到幾百毫秒,這也是很多用戶吐槽WP慢、臃腫的一個原因。小程序接口請求響應(yīng)時間會和頁面請求響應(yīng)時間差不多,但是百度抓取的時候小程序會需要請求多個接口,以JustWeapp小程序為例,完成首屏渲染至少需要請求2個接口:全局配置信息接口和文章基礎(chǔ)信息接口,由于多個接口其實是并行請求的,所以時間也不能單純用兩個接口請求時間想加,但是也是很容易就超過1.2秒的,更何況很多網(wǎng)站速度更慢、文章更多。
優(yōu)化建議
WordPress打開慢是WP站長圈子里面的一個經(jīng)久不衰的話題,但是目前還是有很多方式可以優(yōu)化,常見的就是安裝緩存插件。不過需要注意的是很多插件的緩存優(yōu)化并沒有對小程序所用到的REST API接口進行緩存優(yōu)化,這個需要留意下。
我們推薦的針對小程序接口的優(yōu)化方案會分多個級別:
初級方案
適合技術(shù)小白、網(wǎng)站更新頻率不高的網(wǎng)站,以及沒有注冊登錄需求
直接將接口返回頁面緩存,這樣后續(xù)打開對應(yīng)頁面就會有明顯加速效果,推薦插件:https://cn.wordpress.org/plugins/wp-rest-cache/
進階方案
適合寶塔服務(wù)器面板、有服務(wù)器環(huán)境配置能力
服務(wù)器需要先配置好Memcached
或者Redis
,寶塔的話在PHP里面安裝擴展,然后WordPress后臺可通過插件配合將數(shù)據(jù)緩存到內(nèi)存里面。
推薦插件W3 Total Cache
:https://wordpress.org/plugins/w3-total-cache/
W3 Total Cache
是一個專業(yè)的緩存優(yōu)化插件,可能會涉及到服務(wù)器配置文件的調(diào)整,所以不會用的話請勿隨意開啟或者修改其他選項,這里我們僅介紹WordPress內(nèi)置的對象緩存
數(shù)據(jù)緩存到Memcached
的方法。
1、開啟對象緩存并勾選Memcached
2、配置對象緩存
一般不需要修改,沒有修改過地址或端口的話直接點擊Test
就能通過。主要下面的緩存時間調(diào)大一點,可以參考截圖的設(shè)置:
JustWeapp小程序在開發(fā)和版本更新過程中針對渲染時間的問題也做過很多的優(yōu)化,比如:
- 分優(yōu)先級、多接口請求數(shù)據(jù),比如文章點贊、喜歡、評論內(nèi)容等接口會在首屏渲染完成以后再加載,減少首屏渲染壓力;
- 優(yōu)化數(shù)據(jù)存儲方式,比如小程序排除文章的標(biāo)識數(shù)據(jù)保存方式,數(shù)據(jù)存儲方式不一樣會影響到文章列表數(shù)據(jù)庫查詢時間;
- 功能模塊開關(guān),針對響應(yīng)速度不達標(biāo)的站點可以隱藏一些功能以提高速度;
- 圖片延遲加載;
- 支持百度小程序的云加速服務(wù)
補充說明
由于接口請求時間還會受網(wǎng)絡(luò)環(huán)境等因素影響,就好比我們打開一個網(wǎng)站所需要的時間也是會浮動的,但是大概率還是會保持在一個時間段內(nèi),尤其是百度爬蟲每天爬取巨量數(shù)據(jù),肯定會有不達標(biāo)的情況。
所以針對頁面質(zhì)量也不能完全以某次測試為準(zhǔn),或者說后臺有部分頁面質(zhì)量不合格的鏈接,也都是正常情況,我們只需要保證大部分情況請求時間達標(biāo)即可。