搜索
网站建设,网站优化,网络营销,app开发,小程序开发,全网营销

400-825-2717互联网开发&推广服务提供商

与我们合作

我们专注:网站策划设计、网络舆论监控、网站优化及网站营销、品牌策略与设计
主营业务:网站建设、移动端微信小程序开发、APP开发、网络运营、云产品·运维解决方案

有一个品牌项目想和我们谈谈吗?

您可以填写右边的表格,让我们了解您的项目需求,这是一个良好的开始,我们将会尽快与您取得联系。当然也欢迎您给我们写信或是打电话,让我们听到您的声音

您也可通过下列途径与我们取得联系:

地 址: 上海市长宁区华宁国际7L

电 话: 400-825-2717(咨询专线)

电 话: 13054973230(售后客户服务)

网 址: http://www.56gw.net

传 真: 021-61488448

邮 箱: admin@wumujituan.com

快速提交您的需求 ↓

WordPress优化,做好本地化优化和缓存,读写分离

发布日期:2024-06-12 浏览次数:9102

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内的数据库读写分离:

  1. $wpdb->add_database(array(

  2.     'host'     => 'mysql57001_master', // 主要数据库地址

  3.     'user'     => 'wordpress0_3c9db',

  4.     'password' => 'V4ex41r^pGU2E^7TP7l;cUaqcHLxaGa7nQvzz6CPA',

  5.     'name'     => 'wordpress0_3c9db',

  6.     'write'    => 1, // 给主要数据可写入

  7.     'read'     => !defined('DB_HOST_RPL1') ? 1 : 0, // 当从数据库不可用时主要数据库才可读取,如果从数据库可用则从从数据库读取。

  8. ));

  9. if(defined('DB_HOST_RPL1')):

  10.     $wpdb->add_database(array(

  11.         'host'     => 'mysql57001_slave', // 从数据库地址

  12.         'user'     => 'wordpress0_3c9db',

  13.         'password' => 'V4ex41r^pGU2E^7TP7l;cUaqcHLxaGa7nQvzz6CPA',

  14.         'name'     => 'wordpress0_3c9db',

  15.         'write'    => 0,  // 从数据库不可写入

  16.         'read'     => 1,  // 从数据库可读取

  17.     ));

  18. 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语句。

  1. <?PHP

  2. /**

  3. * Plugin Name: Fix WordPress Slow Queries

  4. * Description: Fix WordPress Slow Queries

  5. * Author: Mahdi Akrami

  6. * Version: 1.0.0

  7. */


  8. class FIX_WP_SLOW_QUERY {


  9.         public static function init () {


  10.                 /**

  11.                  * WP_Query

  12.                  */


  13.                 add_filter ( 'found_posts_query', [ __CLASS__, 'add_found_rows_query' ], 999, 2 );


  14.                 add_filter ( 'posts_request_ids', [ __CLASS__, 'remove_found_rows_query' ], 999 );


  15.                 add_filter ( 'posts_pre_query', function ( $posts, \WP_Query $query ) {


  16.                         $query->request = self::remove_found_rows_query ( $query->request );


  17.                         return $posts;

  18.                 }, 999, 2 );


  19.                 add_filter ( 'posts_clauses', function ( $clauses, \WP_Query $wp_query ) {


  20.                         $wp_query->fw_clauses = $clauses;


  21.                         return $clauses;

  22.                 }, 999, 2 );


  23.         }


  24.         public static function remove_found_rows_query ( $sql ) {


  25.                 return str_replace ( ' SQL_CALC_FOUND_ROWS ', '', $sql );

  26.         }


  27.         public static function add_found_rows_query ( $sql, WP_Query $query ) {


  28.                 global $wpdb;


  29.                 $distinct = $query->fw_clauses['distinct'] ?? '';

  30.                 $join     = $query->fw_clauses['join'] ?? '';

  31.                 $where    = $query->fw_clauses['where'] ?? '';

  32.                 $groupby  = $query->fw_clauses['groupby'] ?? '';


  33.                 $count = 'COUNT (*)';


  34.                 if ( ! empty ( $groupby ) ) {

  35.                         $count = "COUNT ( distinct $groupby )";

  36.                 }


  37.                 return "

  38.                         SELECT $distinct $count

  39.                         FROM {$wpdb->posts} $join

  40.                         WHERE 1=1 $where

  41.                 ";

  42.         }


  43. }


  44. FIX_WP_SLOW_QUERY::init ();



请教大佬 Elasticsearch搜索 怎么搞,哪里有现成的源码?
挺复杂的,宝塔内置免费的elasticsearch
网上也有部署Elasticsearch的方法,因为和百度站内搜索引擎一样不支持Https,更好是docker部署,
IP:9200端口访问成功就是部署成功。
例外还要安装kibana、ik分词器
然后安装https://wordpress.org/plugins/elasticpress/ 插件设置索引。

GO 知识
查看经典案例

TOP

QQ客服

免费电话

微信咨询 在线咨询 免费电话
获取报价
您的称呼:

*

您的电话:

*

您的邮箱:

*

提交 重置
重要的事情,电话里聊

接通客服

不方便的时候线上咨询,在线等哦