影響網站速度的因素,與優化策略-主觀因素篇(上)
前言
上一篇的客觀條件,我們談了這趟資料流中,網站/電商經營者能掌握的客觀條件,然而,電商系統畢竟是資料的主要載體:如何生成動態資料?如何安排靜態資源?如何向第三方服務交換資訊?電商系統能影響的因素,就像整套物流服務的中的車輛一樣,很大程度上地,決定了最終送達資訊封包的速度。
接下來,我們從電商開發商的角度,並以Magento系統為例,說明我們為電商系統主觀層面的因素,應可作為初步健檢的參考。本篇將著重於後台管理者可進行的相關設定說明,不管您身處於以下哪種狀況,希望這些內容對您有所幫助:
- 正在評估該用哪套電商系統支援線上通路,想了解Magento將如何協助用戶建立速度優勢。
- 日常業務需要登入Magento後台的管理者,想進一步優化系統速度,但卻不知該從何處下手。
和速度相關的初步健檢
本節我們提供6個和速度相關的自檢項目,有些項目是透過減少伺服器端的運算負荷;有些則是因應個案有所差異的配置最佳化;總之,我們希望能在設定最佳化的配置下運作,藉著降低運算負荷,提升整體系統的乘載力與處理效率。
這6個自檢項目,有些可以直接從系統的管理後台直接操作,有些則需要從伺服器端用指令碼進行操作,可能需要開發團隊的協助,分別為:
管理後台相關設定
減少HTTP Request
每當網頁嘗試讀取java script / css這類在瀏覽器端運作的文件,這時候就會產生一個下載的Http Request。而電商系統的各種動態頁面當中,為了符合各種機制的需要,極有可能包含數十甚至上百個這類的文件,每次的下載行為或多或少都會影響到伺服器的效能。而我們的目標就是減少這個行為的次數,幸好,Magento在開發者的運作模式下可以進行此項參數的調整,有三項關聯的選項,可以在stores / configuration / advanced / developer分頁中找到:
- Merge JavaScript / CSS Files:這個項目可以決定是否將多個javascript的文件,全部打包成一個,當然這包文件的檔案會較大一點,但可以大量降低Http Request的數量。
- Enable JavaScript Bundling:和前項類似的概念,但打包的方式與邏輯不太相同,據我們的實務經驗來說,啟用此項參數往往效果不彰,且可能產生程式邏輯上的問題,建議避免啟用。
- Minify JavaScript / CSS Files:啟用此項目可以將省略開發階段的排版/註記等資訊,只保留瀏覽器可以讀取的格式,藉以最小化文件,建議應於網站正式運作時啟用。
啟用系統的快取功能
在Magento這類電商系統中,如何有效的管理伺服器端的快取,並將各種動態生成的資訊,派送到瀏覽器另一端的使用者手上,一直都是門學問。有兩個相關的選項將影響快取的運作:
- Full page cache:在stores / configuration / advanced / system分頁中可以找到,關於快取的啟用設定,視您安裝的Magento版本而定,官方提供了不同的選項,各有優劣;後台管理者應在網站運作前,確保快取功能已經如預期啟用。
- Cache Management:在System / cache management分頁中可以找到,這裡囊括了系統中可控的快取項目,管理員應定期手動刷新可控的快取項目,或是依照業務需求,協請開發團隊將刷新快取的任務,進行自動化排程的處理。
啟用前端渲染優化套件
瀏覽器在載入各種圖片時,會需要由伺服器進行下載的動作,想必您一定看過在某些網站,會先將文字內容顯示在頁面上,讓使用者在頁面上先行操作,而後再進行圖片的讀取,完成後讀取後再進行渲染,藉以避免整個頁面元素在完全讀取後,才能操作的漫長等待。嚴格說來,這是一種在前台頁面進行的障眼法,實質上並沒有真的降低系統負荷;但卻有效的讓使用者減少等待的感受。而Magento能支援此類功能的優化套件,可以從市集上找到不少,啟用這類功能,對於電商系統來說可以說是項CP值十分高的投資。
以Magezon公司推出的Lazy Load為例,成功安裝並啟用後,會將全站用到的圖片,在前台顯示時套用本功能。
伺服器端相關設定
設定平台的運作模式
在Magento系統中,有三種系統的運作模式,三種模式的切換,則必須透過伺服器端的命令碼執行,以運作速度排列依序為:開發者模式/預設模式/正式環境模式。
不消說,開發者模式當然有其存在的必要性,主要用於讓開發者設定系統核心的運作參數,三種運作模式的具體差異,我們將另開一篇來做說明。而作為一個已經對外營運的電商網站來說,當然要確保系統在正式環境的模式下運作。
定期日誌的生成規則
定期日誌對於任何系統來說都是至關重要的,當你的網站出現各種疑難雜症,對於開發團隊來說,這些日誌就成了檢測的第一步依據。生成這些日誌,的確稍微影響了一點機器的運作效率,但保留多久就成了另一個議題了。或許在網站啟用之初,您還感受不到日誌對系統穩定造成的影響,但隨著時間的推演,日誌對於系統的影響會越發明顯。
值得注意的是,這些規則在Magento 1當中,官方是透過後台介面讓管理者自行調整的;然而到了Magento 2的版本,則無法透過後台介面調整,無論如何透過何種方式確認,定期日誌的生成與儲存規則對電商系統來說都是重要的一環。
合理執行伺服器端的工作排程
這裡提到的工作排程,依照不同的電商特性,會有各種不同的情境與不同的工作數量。例如物流的貨態追蹤環節,假若一天排定一次向物流業者進行同步,可以盡量安排在凌晨階段的離峰時段進行;其次,確保第三方業者是否會主動發出訊息通知電商系統,例如金流的付款確認等等,如是,則電商系統可以被動的接受來自第三方的通知,而非頻繁地主動發出查詢的需求,藉以降低系統負荷。
結語
電商系統本身的主觀因素,會因為專案的歷史背景和企業文化有著巨大的差異性,本篇提到的內容,可說是歐斯瑞為客戶系統健檢的脈絡。如果您希望自身的電商系統能透過一套完整的健檢後持續優化,歡迎與我們聯繫。
延伸閱讀(參考資料)
- [codecademy] -HTTP Requests
- [Servebolt]-Speed up Magento 2 in 7 easy steps
- 影響網站速度的因素,與優化策略 – 客觀條件篇
我要留言