by Rain Chu | 2 月 21, 2024 | PHP, wordpress
在處理大量數據和高流量的情況下,WordPress網站可能會面臨效能問題。這時,使用高效的緩存解決方案變得尤為重要。Object Cache Pro是一款專業級的物件緩存插件,它能夠顯著提升WordPress網站的性能和響應速度。本文將介紹如何在WordPress中安裝和配置Object Cache Pro。
安裝Object Cache Pro
步驟1:獲取插件
先從Object Cache Pro官方網站購買插件。完成後會取得授權金鑰。
步驟2:上傳並安裝插件
- 登入您的WordPress後台。
- 點擊「插件」>「新增」。
- 選擇「上傳插件」,然後選擇您下載的Object Cache Pro插件文件。
- 上傳並安裝插件。
跟一般外掛不一樣的地方,這邊要自己手動在 /wp-content/wp-config.php 中,去配置參數,配置方法如下
define('WP_REDIS_CONFIG', [
'token' => '<your-license-token>',
'host' => '127.0.0.1',
'port' => 6379,
'database' => 0, // change for each site
'maxttl' => 86400 * 7,
'timeout' => 1.0,
'read_timeout' => 1.0,
'split_alloptions' => true,
'debug' => false,
]);
define('WP_REDIS_DISABLED', false);
步驟4:清除舊資料
步驟4:啟用插件
安裝完成後,點擊「啟用插件」。
進階配置Object Cache Pro
超快速度的配置
Object Cache Pro 進階配置,將序列話變成二進制,並且啟用快速壓縮等功能,再加入多主機支援
define('WP_REDIS_CONFIG', [
'token' => '...',
'host' => '127.0.0.1',
'port' => 6379,
'database' => 0, // change for each site
'timeout' => 0.5,
'read_timeout' => 0.5,
'retry_interval' => 10,
'retries' => 3,
'backoff' => 'smart',
'compression' => 'zstd', // `zstd` compresses smaller, `lz4` compresses faster
'serializer' => 'igbinary',
'async_flush' => true,
'split_alloptions' => true,
'prefetch' => true,
'strict' => true,
'debug' => false,
'save_commands' => false,
'prefix' => 'mysitename',
]);
define('WP_REDIS_DISABLED', getenv('WP_REDIS_DISABLED') ?: false);
安裝 PHP 外掛支援超快速配置
想要享用超快速的 object cache pro 配置的話,有兩個前提要先做好
1.安裝igbinary serializer
簡易安裝
pecl install igbinary
pecl install --configureoptions='enable-redis-igbinary="yes"' redis
原始檔安裝
https://github.com/igbinary/igbinary#installing
2.安裝 lzf/lz4/zstd compression
簡易安裝
# Use prompts
pecl install redis
# Skip prompts
pecl install --configureoptions='enable-redis-lzf="yes" enable-redis-zstd="yes" enable-redis-lz4="yes"' redis
原始檔安裝
https://github.com/phpredis/phpredis/blob/develop/INSTALL.md
測試和優化
安裝並配置好Object Cache Pro後,您應該進行測試,以確保一切運作正常。您可以使用速度測試工具如GTmetrix來檢查網站效能的提升。
結論
使用Object Cache Pro可以顯著提升WordPress網站的效能。通過合理配置和優化,您可以為您的用戶提供更快、更流暢的瀏覽體驗。
by Rain Chu | 11 月 2, 2023 | web
在現代的商業世界中,電子郵件成為了溝通的主要渠道,但當企業的郵件被誤判為垃圾郵件並被列入黑名單時,它可能會對業務運作造成嚴重的影響。被列入黑名單不僅影響公司的信譽,還可能導致與客戶、合作夥伴和潛在業務機會之間的重要信息丟失。在此文章中,我們將與您分享實際的案例經驗,描述如何成功地將企業郵件從垃圾郵件名單中移除,並提供一套實用的策略和方法,以確保您的企業信件能夠順利地抵達收件人的收件箱。無論您是IT主管、企業管理者或只是希望了解更多關於這一議題的人,這篇文章都將為您提供寶貴的見解和建議。讓我們一起深入探討,並學習如何避免和解決這一常見的問題。
好用的垃圾郵件清單工具網站
Spamhaus 、 SpamCop 是我們在網路安全領域中的重要夥伴,專門協助我們追蹤和阻止垃圾郵件和網路威脅。作為 IT 主管,我深知 Spamhaus 提供的各種黑名單如何對我們的企業網路安全起到關鍵作用。
- SBL (垃圾郵件黑名單):這是一個列出可疑 IP 位址的名單,如果我們的系統或伺服器 IP 被列入,那麼我們的郵件可能會被許多組織拒收。這需要我們與 ISP 或 Spamhaus 即時溝通,確保名單上的資訊是正確的。
- XBL (Exploits Block List):這個名單包括那些被劫持的、受到威脅的 IP 位址。作為 IT 主管,我需要確保我們的伺服器和終端設備不會成為這些被劫持的目標。
- PBL (The Policy Block List):這是一個針對終端用戶 IP 的黑名單。當我們的員工使用公司的網路資源時,我需要確保他們的行為不會導致我們的 IP 被列入這個名單。
- DBL (網域黑名單):這個名單對我們來說特別重要,因為它包含了可能與垃圾郵件相關的域名。我們的郵件伺服器需要能夠掃描並識別這些可能的威脅。
- ZEN:這是一個綜合性的黑名單,涵蓋了 SBL、XBL 和 PBL 的功能。使用這個黑名單可以讓我們更有效地識別和阻止垃圾郵件和網路威脅。
- MXToolBox ,用來確認是否被加入垃圾郵件清單
- MultiBL,用來確認你的IP是否被列為垃圾郵件清單
- Sender Score,用來幫你的 email 主機打分數
常見的反垃圾郵件組織
垃圾郵件組織有上百個,這裡整理一些常見的
- Composite Blocking List (CBL)
- Spamhaus Block List (SBL)
- XBL Exploits Block List
- Spamcop
- Passive Spam Block List (PSBL)
- Invaluement
- Barracuda
- SenderScore
Spamhaus 、 spamcop 提供的黑名單對我們的網路安全策略至關重要。我們需要密切關注這些名單,並確保我們的網路和資源不會被誤列或受到威脅。
Gmail垃圾郵件的處理方法
參考資料
https://www.richesinfo.com.tw/index.php/mxmail/mxmail-faq/155-mxmail-faq-gmail
by Rain Chu | 9 月 6, 2023 | IIS, PHP
最近遇到 PHP 太吃記憶體的問題,我除了在php.ini 中設定 limit memory 以外,也打算在 IIS 中把總量的記憶體限制住,避免讓主機的記憶體爆滿,而當機,可以在記憶題超過限制後,把自己行程回收。
設定方法
在管理介面中,找到 「Advanced Settings」 ,進去後往下滑找到 「Private Memory Limit (KB)」 ,這邊這個數值是 KB 為主,如果希望將 Private Memory Limit (KB) 設定為 10GB,您需要將其設定為 10485760 KB 設定公式如下
10 GB = 10 * 1024 * 1024 KB = 10485760 KB
我設定的邏輯是觀察主機上所有的 Application Pool 會用到多少的記憶體,然後去分配她
by Rain Chu | 6 月 30, 2023 | web, wordpress
Redis作為一款開源的高性能key-value數據庫,已經在眾多頂尖科技公司和網站獲得廣泛應用。本文將引領您走過安裝和配置Redis資料庫的過程,並提供實用的優化技巧,助力您的系統性能達到新的高峰。
為什麼選擇Redis?
首先,讓我們理解一下為什麼您應該選擇Redis。Redis以其極速性能、靈活的數據結構和高可用性成為獨一無二的選擇。它可以作為緩存,消息佇列,以及在高壓情況下用作可靠的數據存儲。
安裝Redis
Ubuntu安裝Redis
sudo apt install redis-server
Windows 安裝 Redis
直接下載微軟製作的安裝包,下載網址 https://github.com/MicrosoftArchive/redis/releases
驗證Redis是否安裝成功
如果是剛安裝好,並且在同一台機器上可以直接打指令 redis-cli 就可以連線
redis-cli
redis-cli ping
redis-cli info
如果是別台機器的話,記得要開防火牆,並且指定 IP 以及指定 Port 和指定密碼
redis-cli -h 192.168.0.X -p 6379 -a 123456
設定Redis
設定檔案通常位於 /etc/redis/redis.conf ,編輯完記得要重開服務 sudo systemctl restart redis ,不確定conf檔案的位置的話,可以用 redis-cli info 查找,會顯示以下資訊
executable:/usr/bin/redis-server
config_file:/etc/redis/redis.conf
sudo nano /etc/redis/redis.conf
bind:若要遠端連入Redis伺服器,就會需要設定 bind 0.0.0.0 ::
databases:設定可用的資料庫數量,在索引的時候是從0開始數,預設會使用索引值為0的資料庫。這個項目的預設值是16
save:設定在一定的間隔時間內若資料庫有發生一定程度的改變,就將記憶體中當下的資料存成檔案(快照)。save的撰寫格式為save <seconds> <changes>,save 60 10000表示在60秒內至少有10000個key被改變則做一次快照。
requirepass:設定客戶端與Redis伺服器連線時所需要的密碼。預設沒有設定,表示不啟用密碼驗證功能。
maxclients:設定最大連線數。預設沒有設定,當作10000。
maxmemory:設定最大的記憶體使用量,如果記憶體用量達到限制,就會根據maxmemory-policy項目設定的策略來嘗試移除key,如果無法移除,就會使該次插入或修改的操作回傳錯誤。預設沒有設定,表示不限制。
maxmemory-policy:記憶體用量達到限制時採取的策略。預設沒有設定,當作noeviction,不移除key。其它策略如下:
volatile-lru:根據LRU演算法移除過期的key。
allkeys-lru:根據LRU演算法移除key。(不管有沒有過期)
volatile-lfu:根據LFU演算法移除過期的key。
allkeys-lfu:根據LFU演算法移除key。(不管有沒有過期)
volatile-random:隨機移除過期的key。
allkeys-random:隨機移除key。(不管有沒有過期)
volatile-ttl:移除已過期的key中,TTL最小的key。
#bind 127.0.0.1 ::1
bind 0.0.0.0 ::
重啟服務
sudo systemctl restart redis
清除Redis的資料
利用 redis-cli 進去 Redis 主機後,輸入
清除單一資料的指令是
在 WordPress 中使用 Redis
Redis Object Cache 外掛網址 https://wordpress.org/plugins/redis-cache/
設定 wp-config.php
// adjust Redis host and port if necessary
define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', 6379 );
// change the prefix and database for each site to avoid cache data collisions
define( 'WP_REDIS_PREFIX', 'my-moms-site' );
define( 'WP_REDIS_DATABASE', 0 ); // 0-15
// reasonable connection and read+write timeouts
define( 'WP_REDIS_TIMEOUT', 1 );
define( 'WP_REDIS_READ_TIMEOUT', 1 );
/* That's all, stop editing! Happy publishing. */
require_once(ABSPATH . 'wp-settings.php');
組態檔
| Configuration constant | Default | Description |
|---|
WP_REDIS_HOST | 127.0.0.1 | The hostname of the Redis server |
WP_REDIS_PORT | 6379 | The port of the Redis server |
WP_REDIS_PATH | | The path to the unix socket of the Redis server |
WP_REDIS_SCHEME | tcp | The scheme used to connect: tcp or unix |
WP_REDIS_DATABASE | 0 | The database used by the cache: 0-15 |
WP_REDIS_PREFIX | | The prefix used for all cache keys to avoid data collisions, replaces WP_CACHE_KEY_SALT. Should be human readable, not a “salt”. |
WP_REDIS_PASSWORD | | The password of the Redis server. Supports Redis ACLs arrays: ['user', 'password'] |
WP_REDIS_MAXTTL | 0 | The maximum time-to-live of cache keys |
WP_REDIS_CLIENT | | The client used to communicate with Redis: predis, phpredis or relay |
WP_REDIS_TIMEOUT | 1 | The connection timeout in seconds |
WP_REDIS_READ_TIMEOUT | 1 | The timeout in seconds when reading/writing |
WP_REDIS_IGNORED_GROUPS | [] | Groups that should not be cached between requests in Redis |
常用控制指令
| Command | Description |
|---|
wp redis status | Shows the object cache status and diagnostics |
wp redis enable | Enables the object cache |
wp redis disable | Disables the object cache |
wp redis update-dropin | Updates the object cache drop-in |
效能考量,安裝 Phpredis
請先到 phpredis 這邊搜尋對應你平台的檔案,用 Linux Ubuntu 為例,下載 redis-6.0.2 版本 ,並且解壓縮他
wget https://pecl.php.net/get/redis-6.0.2.tgz
tar -zxvf redis-6.0.2.tgz
cd redis-6.0.2
接下來先編譯原檔案
sudo phpize
sudo ./configure
sudo make && sudo make install
完成編譯檔案後,要把 .so 檔案放到 php 的 modules 中,先把該目錄找出來
php -i | grep extension_dir
系統回應我,extension_dir => /usr/lib/php/20220829 => /usr/lib/php/20220829 ,則將剛編譯好,放在 modules 下的 redis.so 複製到正確的目錄中
sudo cp ./modules/redis.so /usr/lib/php/20220829/
複製完畢後,需要去修改 php.ini 檔案,讓他支援 redis,這邊我示範用 Nginx
sudo nano /etc/php/8.2/fpm/php.ini
將 extension 打開,請找到 Dynamic Extensions ,並且在下面加入
設定完成後,重開 php 讓他生效
sudo systemctl restart php8.2-fpm
檢查方法,利用info.php,並且搜尋是否有redis字眼,如下圖就是成功了
關於Redis的大小事
預設安裝完畢,初始話是支援16個資料庫的,分別由編號 0-15 ,要增加資料庫,要去 Redis 的組態檔裡面修改 redis/redis.conf 中,找到 databases ,並且調整數值後,重新啟動即可
Redis 讀取資料
redis-cli set my_key "Value"
redis-cli get my_key
Redis 列出所有的 KEY
相關文章
詳細的指令操作介紹
by Rain Chu | 5 月 23, 2023 | web
如果要在 HTML 中播放影片,並且當作背景,一進來就自動播放,通常我們使用 video tag ,可以參考 https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/video ,通常長得像是
<video autoplay poster="posterimage.jpg">
<source src="video.mp4" type="video/mp4">
</video>
其中如果你要正常在各個瀏覽器中正常的「自動播放」,要加入 muted ,因為現在的瀏覽器的安全規範,都是只能自動播放無音軌的影片
<video autoplay muted poster="posterimage.jpg">
<source src="video.mp4" type="video/mp4">
</video>
那很多人會發現,ios 上面的設備有問題,因為在 ios 上面還有自己的規範,https://developer.apple.com/documentation/webkit/delivering_video_content_for_safari#3030250 ,主要就是講要加入 playsinline 屬性來定義影片的行為
<video autoplay muted playsinline poster="posterimage.jpg">
<source src="video.mp4" type="video/mp4">
</video>
到此為止就都可以正常在各個設備上使用
by Rain Chu | 5 月 8, 2023 | PHP, 程式
WordPress 最好還是安裝在 Linux 下比較少問題,但非得要用到 Windows IIS 的時候,要注意現在 php 程式設計師很喜歡用 curl 在讀取資料,當你用 curl 讀取 SSL 加密(現在還有那個網站沒有)的時候,應該是會收到 PHP Curl SSL Certificate Problem: Unable to get local issuer certificate 錯誤訊息,解決方法如下
下載 pem 檔案
https://curl.se/docs/caextract.html
https://curl.se/ca/cacert.pem
將檔案放在 php 下的 SSL 目錄中
copy cacert.pem C:\php8\extras\ssl\
修改 php.ini
打開 php.ini 找到 curl.cainfo = ,加入你 cacert.pem 的路徑
重新啟動 IIS
1.回收 Application Pools
2.重啟網站
之後就可以使用了
近期留言