LCP優化安裝Memcached擴充OPcache配置,WordPress優化指南

安裝Memcached擴充WordPress 網站存取速度慢需要LCP優化的解決方法

進行 LCP是最近幾年推出的一個網站評估指標,LCP(Largest Contentful Paint)最關鍵的兩個指標,一個是LCP另外一個是CLS,將LCP優化到2秒之內的話,在Google搜尋中會有更多的網站展示機會。 LCP優化在中有很多熱門,大家可以去安裝緩存。無論如何優化緩存,最終還是要縮短初始的回應用時,在LCP優化之前,需要先設定伺服器快取。

關於LCP具體參考:優化Largest Contentful Paint 最大內容繪製

網址未被視為良好網址的原因圖例。

WordPress终极加速指南 LCP优化网站加载速度,安装Memcached扩展和配置Opcache-1

伺服器端快取工具

快取(或內容快取)是一種廣泛使用的技術,用於將資料副本儲存在臨時儲存位置(也稱為快取)中,因此與從原始儲存中檢索資料相比,可以輕鬆,快速地存取數據。根據快取的類型和目的,儲存在快取中的資料可以包括文件或文件片段(例如HTML文件,腳本,圖像,文件等),操作或記錄,API調用,記錄等。

Linux伺服器的快取工具有許多優秀的開源快取工具,Memcached和Redis等等,以下主要介紹一下Memcached的使用方法。

Memcached

Memcached是一個免費,開源,簡單但功能強大的分散式記憶體物件快取系統。它是記憶體中的鍵值存儲區,用於存儲小塊數據,例如資料庫調用,API調用或頁面呈現的結果。它可以在類似Unix的作業系統(包括Linux和OS X)上運行,也可以在Microsoft 上運行。

WordPress终极加速指南,安装Memcached扩展和配置Opcache优化网站加载速度-1

什麼是Memcached 記憶體緩存

免費開源、高效能、分散式記憶體物件快取系統,本質上是通用的,但旨在透過減輕資料庫負載來動態Web 應用程式。

Memcached 是一種記憶體中的鍵值存儲,用於存儲來自資料庫呼叫、API 呼叫或頁面呈現結果的任意小塊資料(字串、物件)。

Memcached 簡單而強大。其簡單的設計促進了快速部署、易於開發,並解決了大數據快取面臨的許多問題。其API 適用於大多數流行語言。

http://memcached.org

最新穩定版:memcached-1.6.18.tar.gz (2023-1-10)

Memcached安裝

/:apt-get 安裝libevent-dev Redhat/:dnf 安裝libevent-devel

下載原始碼編譯安裝

wget http://memcached.org/latest tar -zxvf memcached-1.6.18.tar.gz cd memcached-1.6.18 ./configure && make && make test && sudo make install

安裝完畢後需要啟動

#查看memcache是否安裝完成ls -al /usr/local/bin/mem* #啟動memcache的服務/usr/local/bin/memcached -d -m 200 -u www -p 11211 -c 256 -P /tmp/ memcached.pid

Memcache參數說明:

  • -d選項是啟動一個守護進程,
  • -m是分配給Memcache使用的記憶體數量,單位是MB,我這裡是10MB
  • -u是運行Memcache的用戶,這裡是root
  • -l是監聽的伺服器IP位址,如果有多個位址的話,我這裡指定了伺服器的IP位址202.207.177.177
  • -p是設定Memcache監聽的端口,我這裡設定了11211,最好是1024以上的端口
  • -c選項是最大運行的並發連線數,預設是1024,我這裡設定了256,按照你伺服器的負載量來設定
  • -P是設定保存Memcache的pid文件,我這裡是保存在/tmp/memcached.pid

透過軟體倉庫安裝

dnf install libevent-devel memcached

安裝之後,設定開機啟動

#啟動systemctl start memcached #設定開機啟動systemctl enable memcached #查看目前狀態systemctl status memcached

Memcached修改快取大小

安裝完畢後,修改memcached 的快取大小,預設是64M,將快取修改為1024M

打開 /etc/sysconfig/memcached 文件,將CACHESIZE修改為:1024

PORT="11211" USER="memcached" MAXCONN="1024" CACHESIZE="1024" OPTIONS="-l 127.0.0.1,::1,controller"

修改完畢後,systemctl restart memcached 重新啟動服務

ps -ef | grep memcached

查看配置是否生效

LCP优化 安装Memcached扩展 OPcache配置,WordPress优化指南-1Memcached安裝完畢後,如果想讓Memcached在網站中正常運作,還需要在PHP中安裝.

安裝Memcached擴充

注意:在安裝Memcached之前,需要了解,在PHP擴充功能中有Memcache擴充和Memcached擴充兩種,Memcached擴充是Memcache擴充的升級版本,支援功能更多。性能更好。注意不要安裝錯了。

  • memcache 是pecl 擴充函式庫版本,支援原生php,屬於第一代cache;
  • memcached 是libmemcached 版本,出現較後,是新一代cache,因此也更加完善,推薦使用memcached 。

透過DNF 方式安裝的PHP8.0的安裝路徑和配置位置如下:

  • RPM包安裝PHP的安裝路徑:/usr/bin/php-config
  • PHP的設定檔:/etc/php.ini

下面是Memcache擴充和Memcached擴充的安裝方法,如無Memcache擴充的安裝需求,可以直接跳轉的Memcached擴充的安裝方法

原始碼安裝Memcache擴充

安裝Memcache擴充所需依賴。

dnf install zlib zlib-devel

第一步:打開https://pecl.php.net/package/memcache下載php8的Memcache擴充安裝包。
注意:php版本不同,Memcache擴充安裝包也不一樣,找對應的版本安裝。

php8的Memcache擴充安裝包:https://pecl.php.net/get/memcache-8.0.tgz

第二步:登入伺服器,下載解壓縮Memcache擴充安裝包

wget https://pecl.php.net/get/memcache-8.0.tgz tar -xvf memcache-8.0.tgz cd memcache-8.0

第三步:安裝Memcache擴展

phpize ./configure --with-php-config=/usr/bin/php-config make && make install

安裝成功後,會顯示 Installing shared extensions: /usr/lib64/php/modules/

安装Memcached扩展 OPcache配置,WordPress终极 LCP优化 指南-1

步驟四:修改php.ini文件,啟用Memcache擴展,在php.ini檔案結尾加上下面內容。

extension = memcache

測試PHP配置是否正確,然後重新啟動PHP服務

php-fpm -t systemctl restart php-fpm

查看php探針文件,擴充正常啟動

安装Memcached扩展 OPcache配置,WordPress终极 LCP优化 指南-1

原始碼安裝Memcached擴充

第一步:打開https://pecl.php.net/package/memcached下載php8的Memcached擴展安裝包。
注意:php版本不同,Memcached擴展安裝套件也不一樣,找對應的版本安裝。

php8的Memcached擴充安裝包:memcached-3.2.0.tgz

第二步:登入伺服器,下載解壓縮Memcached擴充安裝包

wget https://pecl.php.net/get/memcached-3.2.0.tgz tar -xvf memcached-3.2.0.tgz cd memcached-3.2.0

memcached,這個擴充功能需要libmemcached 用戶端函式庫,否則會出現下列錯誤:

error: memcached support requires libmemcached. Use --with-libmemcached-dir= to specify the prefix where libmemcached headers and library are located

 

LCP优化 安装Memcached扩展 OPcache配置,WordPress优化指南-1

dnf install libmemcached libmemcached-devel remi-libmemcached-awesome

注意:如果在軟體倉庫中沒有libmemcached-devel,可以下載安裝

wget https://vault.centos.org/centos/8/PowerTools/x86_64/os/Packages/libmemcached-devel-1.0.18-15.el8.x86_64.rpm dnf --enablerepo=powertools install libmemcached-devel

LCP优化 安装Memcached扩展 OPcache配置,WordPress优化指南-1第三步:安裝Memcached擴充

phpize ./configure --with-php-config=/usr/bin/php-config make && make install

安裝成功後,會顯示安裝位置 Installing shared extensions: /usr/lib64/php/modules/

 

第四步:修改php.ini文件,啟用Memcached擴展,在php.ini檔案末尾加上下面內容。

extension = memcached

測試PHP配置是否正確,然後重新啟動PHP服務

php-fpm -t systemctl restart php-fpm

查看php探針文件,Memcached擴展正常啟動

LCP优化 安装Memcached扩展 OPcache配置,WordPress优化指南-1

你可以在無需下載原始碼的情況下,使用pecl命令安裝memcached擴展

pecl install memcached

知識點:如果無法使用dnf在軟體倉庫中安裝php擴展,可以使用pecl指令在php官方擴充庫中進行安裝。

Memcached擴充安裝完畢後,還需要進行WordPress與Memcached的連接,如果不進行伺服器端與WEB端的連接的話,Memcached快取將不會起作用。

WordPress配置Memcached快取

在wp-config.php中加入以下內容。

global $memcached_servers; $memcached_servers = array( array( '127.0.0.1', // Memcached server IP address 11211 // Memcached server port ) );

如果多站點快取設定的話,請參考下面內容:

global $memcached_servers; $memcached_servers = array( array( '1.2.3.4', 11211 ), array( '1.2.3.5', 11211 ) );

memcached 監聽IP 和端口,你可以透過以下命令查看:

netstat -nutlp | grep memcache

在WordPress中使用快取外掛程式配置memcached

下載安裝W3 Total Cache Pro v2.3.0 免費下載破解版! WordPress快取外掛程式推薦

W3TC目前可以在插件介面配置memcached記憶體緩存,無需複雜配置,也無需修改程式碼等等,W3TC功能強大,快取配置選項繁多,可以配合WP Meteor插件使用。

LCP优化 安装Memcached扩展 OPcache配置,WordPress优化指南-1

如何監控Memcached工作是否正常

點選下載監控檔memcache.php

將memcache.php檔案下載後,上傳到伺服器上WordPress目錄下,在上傳之前,先修改檔案內的存取使用者口令。

$VERSION='$Id$'; define('ADMIN_USERNAME','設定一個使用者名稱'); // Admin Username define('ADMIN_PASSWORD','設定一個密碼'); // Admin Password define('DATE_FORMAT','Y/ m/d H:i:s'); define('GRAPH_SIZE',200); define('MAX_ITEM_DUMP',50); $MEMCACHE_SERVERS[] = '127.0.0.1:11211'; // add more as an array // $MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // 如果是多站點記憶體緩存,設定這裡

上傳之後,造訪memcache.php檔案的URL位址,即可看到記憶體快取的工作頁面。

LCP优化 安装Memcached扩展 OPcache配置,WordPress优化指南-1Zend OPcache配置

使用 使用Opcache 進行PHP 程式碼編譯加速最佳化。提高程式碼的執行效率我們可以使用OPcache來提高PHP程式碼的執行效率, 減少每次載入和解析PHP 腳本的開銷。在php8中OPcache是預設開啟的。

PHP配置jit,PHP 8在PHP的核心中加入了JIT編譯器,可以大幅提升效能。更強的cpu密集處理,或許以後php也可以適當地做複雜協定解析。

首先,僅在啟用opcache的情況下,JIT才有效,這是大多數PHP安裝的預設設置,但您應確保opcache.enable在php.ini檔案中將其設置為1 。透過opcache.jit_buffer_size設定JIT。

安装Memcached扩展 OPcache配置,WordPress终极 LCP优化 指南-1

只需要配置php.ini就可以了,在php.ini末尾添加:

opcache.enable=1 opcache.jit_buffer_size=100M opcache.jit=1255 opcache.revalidate_freq=0 opcache.validate_timestamps=0 opcache.max_accelerated_paches=7963 opcachebache>2m .fast_shutdown=1

opcache.revalidate_freq
這個選項用來設定快取的過期時間(單位是秒),當這個時間達到後,opcache 會檢查你的程式碼是否改變,如果改變了PHP 會重新編譯它,產生新的opcode,並且更新快取。值為「0」 表示每次請求都會檢查你的PHP 代碼是否更新(這意味著會增加很多次stat系統調用,譯註: stat系統調用是讀取文件的狀態,這裡主要是獲取最近修改時間,這個系統呼叫會發生磁碟I/O,所以必然會消耗一些CPU時間,當然系統呼叫本身也會消耗一些CPU時間)。可以在開發環境中把它設為0,生產環境下不用管,因為下面會介紹另一個設定選項。
opcache.validate_timestamps
當這個選項被啟用(設定為1),PHP會在opcache.revalidate_freq 設定的時間到達後偵測檔案的時間戳記(timestamp)。
如果這個選項被停用(設定為0),opcache.revalidate_freq 會被忽略, PHP 檔案永遠不會被檢查。這意味著如果你修改了你的程式碼,然後你把它更新到伺服器上,再在瀏覽器上請求更新的程式碼對應的功能, 你會看不到更新的效果,你必須得重新載入你的PHP (使用kill -SIGUSR2 強制重新載入)。
這個設定是不是有些蛋疼, 但是我強烈建議你在生產環境中使用, why?因為當你在更新伺服器代碼的時候,如果代碼較多,更新操作是有些延遲的,在這個延遲的過程中必然出現舊代碼和新代碼混合的情況,這時候對使用者請求的處理必然存在不確定性。
opcache.max_accelerated_files
這個選項用來控制記憶體中最多可以快取多少個PHP 文件,這個選項必須要設定得夠大,大於你的專案中的所有PHP 檔案的總和。我的程式碼庫大概有6000 個PHP 文件,所以我把這個值設定為一個質數7963 (譯註: 不知道這哥們為什麼要設定這個數,7963 也不是大於6000 的最小質數),你可以運行「find . -type f -print | grep php | wc -l” 這個指令來快速計算你的程式碼庫中的PHP檔數。
opcache.memory_consumption
這個選項的預設值為64MB,我把它設定為192MB,因為我的程式碼很大。你可以透過呼叫opcachegetstatus() 來取得opcache 所使用的記憶體的總量,如果這個值很大,你可以把這個選項設定得更大一些。
opcache.interned_strings_buffer
這是一個很有用的選項,但是似乎完全沒有文件說明。 PHP 使用了一種叫做字串駐留(string interning) 的技術來改善效能。例如,如果你在程式碼中使用了1000 次字串“foobar”,在PHP 內部只會在第一個使用這個字串的時候分配一個不可變的記憶體區域來儲存這個字串,其他的999 次使用都會直接指向這個記憶體區域。這個選項則會把這個特性提升一個層次。

預設情況下這個不可變的記憶體區域只會存在於單一php-fpm 的進程中,如果設定了這個選項,那麼它將會在所有的php-fpm 進程中共享。在比較大的應用中,這可以非常有效地節約內存,並提高應用的效能。
這個選項的值是以兆位元組(megabytes) 作為單位,如果把它設為16,則表示16MB,預設是4MB,這是一個比較低的值。
opcache.fast_shutdown
另外一個很有用但也沒有文件說明的選項。從字面上理解就是」允許更快速關閉」。它的作用是在單一請求結束時提供一種更快速的機制來呼叫程式碼中的析構器,從而加快PHP 的回應速度和PHP 進程資源的回收速度,這樣應用程式可以更快速地回應下一個請求。把它設定為1 就可以使用這個機制了。

 

評分

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *