Skip to main content

效能與資料

裝了流量分析,網站一樣輕快

資料存在自己的主機,難免會擔心拖慢網站。這一頁說明資料怎麼存、前台腳本怎麼載入,以及流量變大時主機那一端怎麼處理。

資料怎麼存

存在外掛自己的資料表

訪客、造訪、瀏覽和事件分開存在外掛建立的資料表,不塞進文章或設定的資料表,也不用另外裝資料庫。

常用查詢有索引

報表會用到的日期、訪客、造訪欄位都建了索引,資料多了照樣查得快。

報表結果會快取

同一份報表不會每次重算,過去的日子數字不會變,存得更久。

舊資料分批清

超過保存天數的資料每天分批刪掉,不會一次卡住主機。

資料都拿得到

資料表就在你的資料庫裡,要匯出、備份或自己寫查詢都可以。

資料庫・外掛的資料表

訪客 twa_visitors
每一次造訪 twa_sessions
每一次瀏覽 twa_hits
點擊、表單、訂單 twa_events
網址對照 twa_paths
表名前面會加上你網站的資料表前綴

前台載入

記錄腳本不擋頁面載入

訪客感受到的速度,看的是前台多載入了什麼。Mo Analytics 在前台只多一支小腳本。

壓縮後約 5KB

整個記錄腳本只有一支檔案,不另外載入其他套件。

延後執行

腳本放在頁尾、延後執行,頁面內容先顯示,不會被它擋住。

送出不等回應

事件攢著一起送,離開頁面時交給瀏覽器在背景送出,不會卡住換頁。

不連外部網域

資料只送回你自己的網域,瀏覽器不用多連一個網站。

一次瀏覽的過程

訪客打開一頁,背後發生了什麼

  1. 1

    頁面照常載入,記錄腳本等頁面內容處理完才執行。

  2. 2

    訪客捲動、點擊、觸控,或頁面在前景停留 8 秒,才記下這一頁。爬蟲和連結預覽通常走不到這一步。

  3. 3

    點擊、表單送出這類事件先攢著,大約每 3 秒送一批。

  4. 4

    離開頁面時,把停留時間和捲動深度一起送出。

有裝快取外掛也不用另外設定:LiteSpeed Cache 和 WP Rocket 會自動把記錄腳本排除在 JS 合併之外,WP Rocket 也不會延遲它;收資料的網址則標成不快取。

主機那一端

流量變大時,主機這樣分擔

項目 做法
收資料的網址 只收不讀,不回傳資料庫裡的任何內容,主機和快取外掛都不會把它存起來
爬蟲過濾 常見的爬蟲和監測工具,前台和主機都認得出來,認出來就不記
次數限制 同一個 IP 每 10 分鐘有上限。有 Redis 或 Memcached 這類物件快取,就記在快取裡
報表快取 含今天的區間 5 分鐘更新一次,過去的日子存 6 小時,即時頁 30 秒
清舊資料 每天排程一次,每批 5000 筆,一次最多跑 20 秒,沒清完一分鐘後接著清
寫入檔案 只有一個:每週下載一次雲端機房的 IP 清單,存在 uploads 資料夾,用來認出機房來的流量

常見問題

還有這些疑問

資料庫會不會越來越大?

資料只留保存天數內的,預設 730 天,最短可以設 30 天,到期每天自動清掉。流量大的網站可以把天數設短一點。

會影響 PageSpeed 分數嗎?

PageSpeed、Lighthouse 這類測試工具會被認出來,不記也不送資料。分數主要還是看網站本身的圖片、佈景和其他外掛,裝之前和裝之後各測一次最準。

流量很大的網站適合嗎?

每次瀏覽都是寫進你自己資料庫的一筆資料,主機要撐得住原本的流量。流量大的網站建議開物件快取,次數限制和報表快取都會用上。

需要定期維護嗎?

不用。清舊資料、對訂單這些工作都由 WordPress 排程自動跑。如果主機關掉了 WordPress 內建排程,記得系統排程有在執行。個資相關的設定寫在個資保護。

裝起來,自己測測看

免費試用 7 天,所有功能都能用。裝之前和裝之後各跑一次測速,數字最準。