與我們合作
我們專注:網站策劃設計、網絡輿論監控、網站優化及網站營銷、品牌策略與設計
主營業務:網站建設、移動端微信小程序開發、APP開發、網絡運營、云產品·運維解決方案
有一個品牌項目想和我們談談嗎?
您可以填寫右邊的表格,讓我們了解您的項目需求,這是一個良好的開始,我們將會盡快與您取得聯系。當然也歡迎您給我們寫信或是打電話,讓我們聽到您的聲音
您也可通過下列途徑與我們取得聯系:
地 址: 上海市長寧區華寧國際7L
電 話: 400-825-2717(咨詢專線)
電 話: 13054973230(售后客戶服務)
傳 真: 021-61488448
郵 箱: admin@wumujituan.com
快速提交您的需求 ↓
WordPress優化,做好本地化優化和緩存,讀寫分離
發布日期:2024-06-12 瀏覽次數:26408
WordPress生態更豐富,有點什么問題搜索就能解決。國內的所謂開源免費幾乎都是養豬待宰,謹慎商用。
說wp卡頓的是沒有優化好,wepublish的WP-China-Plus 就是解決引用國外Google字體和js、官方市場被qiang造成的卡頓問題。
wp的主要瓶頸在mysql上,特別是wp-post數據表,如果能用云數據庫MySQL 更好。
至于運行效率,用opcache緩存PHP腳本,加上Redis或者Memcached緩存數據庫查詢,可大幅提高速度。
如果有點技術,可以用WordPress自帶的rest-api,做headless讀寫分離,再加上Elasticsearch搜索,都是很成熟的解決方案。
無交互的小網站就用WP-Super-Cache或或SIMPLY STATIC生成全站靜態,套個CDN,利用不間斷服務,緩存時間久一點。
WordPress官方出品的HyperDB 是一個非常的數據庫類,它取代了一些 WordPress 內置的數據庫功能。主要區別是:
* HyperDB 可以連接到任意數量的數據庫服務器,
* HyperDB 檢查每個查詢以確定合適的數據庫。
它支持:
讀寫服務器(復制)
可配置的讀寫優先級
本地和遠程數據中心
私人和公共網絡
不同數據庫/主機上的不同表
智能后寫主讀
故障主機的故障轉移
用于分析的統計信息
WordPress 多站點
docker管理系統的URLOS有相關解決方案:https://www.urlos.com/urlos-document/introduction/mysql-master-slave.html
數據庫一主多備實現的數據庫主從集群,修改db-config.php內的數據庫讀寫分離:
$wpdb->add_database(array(
'host' => 'mysql57001_master', // 主要數據庫地址
'user' => 'wordpress0_3c9db',
'password' => 'V4ex41r^pGU2E^7TP7l;cUaqcHLxaGa7nQvzz6CPA',
'name' => 'wordpress0_3c9db',
'write' => 1, // 給主要數據可寫入
'read' => !defined('DB_HOST_RPL1') ? 1 : 0, // 當從數據庫不可用時主要數據庫才可讀取,如果從數據庫可用則從從數據庫讀取。
));
if(defined('DB_HOST_RPL1')):
$wpdb->add_database(array(
'host' => 'mysql57001_slave', // 從數據庫地址
'user' => 'wordpress0_3c9db',
'password' => 'V4ex41r^pGU2E^7TP7l;cUaqcHLxaGa7nQvzz6CPA',
'name' => 'wordpress0_3c9db',
'write' => 0, // 從數據庫不可寫入
'read' => 1, // 從數據庫可讀取
));
endif;
一般小網站無需那么多優化。
如果是使用寶塔面板,用Nginx+Redis Cache緩存提速網站,
配合WordPress插件Nginx Helper ,當我們發布新文章,修改文章,通過評論,修改評論自動清理緩存.
Cache Master 是一個非常輕量級和高性能的緩存插件,可以動態加速您的 WordPress 網站。支持 File、Redis、Memcache、Memcached、APC、APCu、WinCache、MySQL、SQLite、MongoDB 等多達 10 種緩存驅動
wepublish耗子分享:
WordPress 使用SQL_CALC_FOUND_ROWS進行數量統計并計算分頁,但是這個查詢語句在大數據量 (W+) 的情況下是很慢的,一個比較好的解決方法是將其替換成更為現代的COUNT語句。
<?PHP
/**
* Plugin Name: Fix WordPress Slow Queries
* Description: Fix WordPress Slow Queries
* Author: Mahdi Akrami
* Version: 1.0.0
*/
class FIX_WP_SLOW_QUERY {
public static function init () {
/**
* WP_Query
*/
add_filter ( 'found_posts_query', [ __CLASS__, 'add_found_rows_query' ], 999, 2 );
add_filter ( 'posts_request_ids', [ __CLASS__, 'remove_found_rows_query' ], 999 );
add_filter ( 'posts_pre_query', function ( $posts, \WP_Query $query ) {
$query->request = self::remove_found_rows_query ( $query->request );
return $posts;
}, 999, 2 );
add_filter ( 'posts_clauses', function ( $clauses, \WP_Query $wp_query ) {
$wp_query->fw_clauses = $clauses;
return $clauses;
}, 999, 2 );
}
public static function remove_found_rows_query ( $sql ) {
return str_replace ( ' SQL_CALC_FOUND_ROWS ', '', $sql );
}
public static function add_found_rows_query ( $sql, WP_Query $query ) {
global $wpdb;
$distinct = $query->fw_clauses['distinct'] ?? '';
$join = $query->fw_clauses['join'] ?? '';
$where = $query->fw_clauses['where'] ?? '';
$groupby = $query->fw_clauses['groupby'] ?? '';
$count = 'COUNT (*)';
if ( ! empty ( $groupby ) ) {
$count = "COUNT ( distinct $groupby )";
}
return "
SELECT $distinct $count
FROM {$wpdb->posts} $join
WHERE 1=1 $where
";
}
}
FIX_WP_SLOW_QUERY::init ();
請教大佬 Elasticsearch搜索 怎么搞,哪里有現成的源碼?
挺復雜的,寶塔內置免費的elasticsearch
網上也有部署Elasticsearch的方法,因為和百度站內搜索引擎一樣不支持Https,更好是docker部署,
IP:9200端口訪問成功就是部署成功。
例外還要安裝kibana、ik分詞器
然后安裝https://wordpress.org/plugins/elasticpress/ 插件設置索引。

