UI设计 薇晓朵数字商城

 找回密碼
 加入我們

個人優化WordPress速度的方法分享:前端國內免費Cdn加速Js/Css文件,後端數據庫緩存

[複製鏈接]
老黑醬 發表於 2020-10-2 20:20:02 | 顯示全部樓層 |閱讀模式
簡單說下,個人優化WordPress速度的方法:

前端方面通過分離css/js文件,然後把這些文件通過jsdelivr來加載。後端用redis/memcached來緩存數據庫查詢。
同時wp後台緩存網頁內容。
那麼現在的效果怎樣,加載速度由之前的6-10S到現在2S左右吧
並發由之前的17ce直接掛到現在17ce能堅挺了.......

有人說直接把jsdelivr當成CDN用,全站用,但個人覺得jsdelivr內容起碼要1天更新......全站走的話會導致更新不及時

還有的方法就是套CF或者用Nginx自帶的緩存fastcgi_cache

WordPress是一個以PHP和MySQL為平台的自由開源的博客軟件和內容管理系統。WordPress具有插件架構和模板系統。截至2018年4月,排名前1000萬的網站中超過30.6%使用WordPress。WordPress是最受歡迎的網站內容管理系統。全球有大約30%的網站(7億5000個)都是使用WordPress架設網站的。WordPress是目前因特網上最流行的博客系統。WordPress在最著名的網絡發佈階段中脫穎而出。如今,它被使用在超過7000萬個站點上。

雖然wordpress很優秀,但是當正式使用這個CMS以後,卻發現很吃資源,明明博客沒有多少內容,但是只要訪問量一大以後,就導致WordPress打開巨慢,同時主機的使用率非常高。

這裡就分享一些博主優化WordPress的方法。

·分離WordPress的CSS/JS文件

由於WordPress主要是基於PHP,同時又有大量的css/js文件需要加載。每次打開的時候都需要實時生成需要顯示的網頁內容,所以會比較吃主機資源。

這裡博主推薦一款WordPress插件:commonWP

該插件將WordPress與大部分安裝插件所需要的css/js文件通過jsdelivr分發。

jsdelivr目前國內是走網宿的CDN節點,國外走的CloudFlare的節點。加速效果非常明顯。強烈建議該插件必備!!

直接WordPress後台插件安裝界面搜索commonWP安裝其他用即可,不用其他設定。

啟用該插件以後,你可能會發現大部分的css/js文件都通過了jsdelivr分發,但是仍然還是有部分文件沒有走jsdelivr。

那麼這種情況下就需要你手動修改沒有走jsdelivr相關的主題/插件文件了。

不建議沒有動手能力的站長修改!

博主這裡簡單說下如何修改,又如何通過jsdelivr分發。

1、修改主題或者插件引用的css/js文件地址

首先你需要確定你要分發的內容是那個插件所需要使用的css/js文件,然後在主機上找到該插件的文件,通過分析源碼,找到加載該css/js文件的內容,修改引用鏈接。修改後的鏈接後面會說如何獲取。

例如本站有使用auto-highslide,該插件就不會自動被commonWP修改成jsdelivr的地址,那麼通過分析該插件的文件,找到是通過auto-highslide.php加載的相關css/js文件。

在auto-highslide.php文件裡面,發現

  1. <link rel="stylesheet" href="'.get_bloginfo('wpurl').'/wp-content/plugins/auto-highslide/highslide/highslide.css" type="text/css" />
  2. <script type="text/javascript" src="'.get_bloginfo('wpurl').'/wp-content/plugins/auto-highslide/highslide/highslide-with-html.packed.js"></script>
  3. <script type="text/javascript">
複製代碼


那麼需要修改的就是

  1. href="'.get_bloginfo('wpurl').'/wp-content/plugins/auto-highslide/highslide/highslide.css"
複製代碼

  1. src="'.get_bloginfo('wpurl').'/wp-content/plugins/auto-highslide/highslide/highslide-with-html.packed.js"
複製代碼


修改成

  1. href="https://cdn.jsdelivr.net/gh/Loukky/wpcdn@40028ba1e2ff8193194f9c1474d81ed5d26c52eb/themes/highslide.css"
複製代碼

  1. src="https://cdn.jsdelivr.net/gh/Loukky/wpcdn@249a403710b0739bf5173cd9d7afeefd04b12eb0/themes/highslide-with-html.packed.js"
複製代碼


即完整代碼如下

  1. <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/Loukky/wpcdn@40028ba1e2ff8193194f9c1474d81ed5d26c52eb/themes/highslide.css" type="text/css" />
  2. <script type="text/javascript" src="https://cdn.jsdelivr.net/gh/Loukky/wpcdn@249a403710b0739bf5173cd9d7afeefd04b12eb0/themes/highslide-with-html.packed.js"></script>
  3. <script type="text/javascript">
複製代碼


其他的插件與主題修改方法與之類似,另外WP自帶的函數是通過 wp_enqueue_style和wp_enqueue_scripts加載CSS和JS文件的,如果是修改主題的話,注意這兩個函數。

2、手動通過jsdelivr分發文件

該方法需要通過github來操作,在GitHub上面新建一個倉庫,注意倉庫設置成public。上傳你需要分發的內容,然後通過jsdelivr來分發,具體操作這裡不多說。

jsdelivr分發github文件的規則這裡說下。

https://cdn.jsdelivr.net/gh/GitHub用戶名/倉庫名/文件.後綴

注意GitHub區分大小寫,其他倉庫名後面可以通過@來指定具體的某個release版本或者修訂版本。

·緩存數據庫

一般現在用得較多的數據庫緩存是memcached和redis,博主使用的是redis,以redis為例,由於博主是通過寶塔安裝的php,所以這裡也以寶塔為例。

在寶塔的php管理界面,找到安裝擴展,裡面有個redis,通過該路徑來安裝redis,然後wp後台安裝上redis相關的插件。博主這裡使用的是Redis Object Cache

安裝好以後就啟用插件,簡單設置下就可以了。

(可選)然後在寶塔管理界面,選擇mysql管理界面。裡面有個性能調整。根據你的實際使用情況調整相關參數。



通過上面設置與調整過後,那麼現在你的WordPress應該是可以明顯感覺到速度提升了。

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?加入我們

×
回復

使用道具 舉報

 樓主| 老黑醬 發表於 2020-10-2 20:33:11 | 顯示全部樓層
分享一些其他朋友的建議:

litespeed + lscache,lscache需要搭配Openlitespeed(免費)或者Litespeed(2G RAM以下免費)使用

還有wprocket插件解決

wsp+dd+re秒開
回復 支持 反對

使用道具 舉報

 樓主| 老黑醬 發表於 2020-10-2 20:45:26 | 顯示全部樓層
WP負載均衡解決方案

找一家支持雲vps/服務器,並支持私有網絡的idc。

服務器集群所需應用

Nginx
Varnish
Apache
redis
mysql


把應用各自裝到一台服務器,使用私有網絡IP進行通信

Apache 多服務器數據同步問題
sersync + rsync

WP集群所需的session插件
https://github.com/ethitter/WP-Redis-User-Session-Storage

Varnish VCL 配置DEMO
https://gist.github.com/matthewjackowski/062be03b41a68edbadfc

大佬們主要關注是mysql層面壓力,切入點:如何有效減少對mysql的連接?

購買大內存的VPS/服務器安裝Varnish, 通過Varnish緩存前端頁面,直接繞過apache的訪問以減輕apache/mysql的壓力。
Varnish緩存的頁面存儲在內存當中,IO能力最高等級,可直接秒殺SSD裡的靜態HTML頁面。

問題來了,流量到達一個什麼樣的級數才會需要用到這樣的負載均衡方案。不一定到很大的量級,服務器上到一定配置就可以拆分了。達到一定訪問量,我一般用的小型vps拆分,如果量繼續增大,擴展vps/升級還是很方便的,這樣佈置除了緩存加速,還節省硬件開銷。

MySQL 比較標準的做法讀寫分離,優化sql 命令,其實如今硬件這麼便宜,直接堆硬件也可以考慮。
回復 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 加入我們

本版積分規則

备案权重域名预定

4um點擊跨境網編創業社區

GMT+8, 2024-11-24 02:20

By DZ X3.5

QQ

快速回復 返回頂部 返回列表