wking's blog

  • 文章分类
    • 日常随笔
    • IT技术
    • 系统封装
    • 大航海时代
  • 关于博主
GOD'S IN HIS HEAVEN, ALL'S RIGHT WITH THE WORLD.
  1. 首页
  2. IT技术
  3. 正文

wordpress速度优化总结

2024-03-11 624点热度 14人点赞 0条评论

用了这么久的Wordpress,之前优化都是乱七八糟的弄下,最近因为有个网站是给纯小白使用的,用到了很多之前没有自己用的优化代码,所以就整理下吧,当然我这个博客国内用户访问并不快,毕竟服务器基础不行,也是用的Cloudflare优化规则。

在有条件的情况下,最好把服务器网站环境配置达到:

Linux系统:nginx、php7.2起步、mysql8.0、Memcached、opcache,建议php7.3,因为这个版本升级了新版本的Opcache支持。

另外数据库结构选择InnoDB,至于为什么选择,之后我会单独说下。

(如果你流量不大,追求稳定也可以用apache,不过大部分网站其实区别不大,现在还是用nginx的更多)。

静态:图片、js、css上cdn,cdn也是大学问,很多人配置cdn就是连接就行了,都不去配置cdn的功能等。cdn也得根据网站程序,网站对外提供等用途配置缓存等,提高命中率。

当然最重要的是服务器配置了,不考虑钱的基础下就买高配高带宽就行了。如果预算低就选低配,然后动手优化速度吧。

WordPress的优化也和自己用到的主题有关系,有的主题自带了很多优化速度的功能,还有的插件的高级版也自带本地化功能。

好了,现在开始说Wordpress优化小总结,以下不考虑主题。很多代码来自很多插件的分解或者其他网站,有的代码很老了,已经修改到支持wp5。也很多优秀的优化插件,如果你不喜欢用插件就看下面的吧,如果喜欢用插件就在后台搜索优化插件安装就行。

如果不熟悉代码,请使用插件,我推荐WP Rocket(不缺钱考虑)或者WP Super Cache(不出钱考虑),很多插件功能很强大的,还更新快。当然就算用了以下代码,我还是推荐搭配Autoptimize插件,但是这个插件可能和你的主题或者其他插件冲突,造成无法正常显示,所以一点点测试就行。

以下代码按需测试使用,因为有的主题自带了,大部分都和主题有关,自行测试就好。

网站速度测试:

https://developers.google.com/speed/pagespeed/insights/?hl=zh-cn&url=

https://gtmetrix.com/

https://tools.pingdom.com/

本文最后更新时间:2022年10月29日。

  • 1:使用Memcached减少数据库查询:WordPress 速度优化之Memcached
  • 1、使用Opcache、Memcached,但是上面文章的代码,可能不兼容你的PHP版本,可以用Docket Cache插件(前提你服务器配置高硬盘大)
  • 2、使用PHP7.2+、mysql8.0+版本以上(服务器条件允许)

总结代码,按需来,不能直接使用!不能直接使用!不能直接使用!

我自己有的优化也没加上,根据自己主题、网站的实际情况来!

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
<?php
/*
Plugin Name: WordPress优化
Plugin URI: https://www.jingxialai.com/2402.html
Description: WordPress本土优化,可能有兼容问题,所以具体根据自己的主题来。
Version: 2.0
Author: jingxialai
Author URI: https://www.jingxialai.com/2402.html
*/
 
//移除谷歌字体(国内主题一般默认不用谷歌字体)
    if (!function_exists('remove_wp_open_sans')) :
    function remove_wp_open_sans() {
    wp_deregister_style( 'open-sans' );
    wp_register_style( 'open-sans', false );
    }
    // 前台删除Google字体CSS
    add_action('wp_enqueue_scripts', 'remove_wp_open_sans');
    // 后台删除Google字体CSS
    add_action('admin_enqueue_scripts', 'remove_wp_open_sans');
  endif;
 
//删除emoji表情脚本
remove_action('admin_print_scripts', 'print_emoji_detection_script');
remove_action('admin_print_styles', 'print_emoji_styles');
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles');
remove_action('embed_head', 'print_emoji_detection_script');
remove_filter('the_content_feed', 'wp_staticize_emoji');
remove_filter('comment_text_rss', 'wp_staticize_emoji');
remove_filter('wp_mail', 'wp_staticize_emoji_for_email');
 
//页面链接添加html后缀(有的主题默认)
add_action('init', 'html_page_permalink', -1);
function html_page_permalink() {
    global $wp_rewrite;
    if ( !strpos($wp_rewrite->get_page_permastruct(), '.html')) {
        $wp_rewrite->page_structure = $wp_rewrite->page_structure . '.html';
    }
}
 
//禁用XML-RPC(第三方接口,最好把xmlrpc.php文件里面的代码清空,保留个空文件)
add_filter('xmlrpc_enabled', '__return_false');
add_filter('xmlrpc_methods', '__return_empty_array');
 
//禁用REST API(有的主题以及小程序app需要调用)
add_filter('rest_enabled', '_return_false');
add_filter('rest_jsonp_enabled', '_return_false');
add_filter( 'rest_authentication_errors', function( $access ) {
  return new WP_Error( 'rest_cannot_acess', 'REST API已关闭', array( 'status' => 403 ) );
});
 
//禁止加载wp-embed.min.js(有的主题需要调用)
function my_deregister_scripts(){
    wp_dequeue_script( 'wp-embed' );
}
add_action( 'wp_footer', 'my_deregister_scripts' );
 
//除后台之外删除静态资源的查询字符串
function j_remove_script_version( $src ) {
    $parts = explode( '?ver', $src );
    return $parts[0];
}
add_filter( 'script_loader_src', 'j_remove_script_version', 15, 1 );
add_filter( 'style_loader_src', 'j_remove_script_version', 15, 1 );
 
 
//禁用feed
function disable_feed() {
wp_die( '本站不提供feed。<script>location.href="'.bloginfo('url').'";</script>' );
}
add_action('do_feed', 'disable_feed', 1);
add_action('do_feed_rdf', 'disable_feed', 1);
add_action('do_feed_rss', 'disable_feed', 1);
add_action('do_feed_rss2', 'disable_feed', 1);
add_action('do_feed_atom', 'disable_feed', 1);
 
//12取消内容转义
$qmr_work_tags = array(
  'the_title',             // 标题
  'the_content',           // 内容 *
  'the_excerpt',           // 摘要 *
  'single_post_title',     // 单篇文章标题
  'comment_author',        // 评论作者
  'comment_text',          // 评论内容 *
  'bloginfo',              // 博客信息
  'wp_title',              // 网站标题
  'term_description',      // 项目描述
  'category_description',  // 分类描述
  'widget_title',          // 小工具标题
  'widget_text'            // 小工具文本
  );
foreach ( $qmr_work_tags as $qmr_work_tag ) {
  remove_filter ($qmr_work_tag, 'wptexturize');
}
 
/*整体移除页面还会显示的*/
//移除 REST API 端点
remove_action( 'rest_api_init', 'wp_oembed_register_route' );
//移除AutoEmbeds镶嵌
remove_filter( 'the_content', array( $GLOBALS['wp_embed'], 'autoembed' ), 8 );
//移除oEmbed自动发现功能
add_filter( 'embed_oembed_discover', '__return_false' );
//移除oEmbed结果
remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 );
//移除oEmbed发现链接
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
//移除oEmbed使用的JavaScript 文件
remove_action( 'wp_head', 'wp_oembed_add_host_js' );
//移除json连接加载
remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
//remove_action('wp_head', 'rest_output_link_wp_head');
remove_action('template_redirect', 'rest_output_link_header');
//移除WordPress版本
remove_action( 'wp_head', 'wp_generator' );
//移除分类等feed
remove_action( 'wp_head', 'feed_links_extra', 3 );
//移除文章和评论feed
remove_action( 'wp_head', 'feed_links', 2 );
//屏蔽API产生的信息
remove_action( 'template_redirect', 'rest_output_link_header', 11 );
//屏蔽rel=shortlink信息
remove_action( 'template_redirect','wp_shortlink_header', 11, 0);
//移除ShortLink
remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );
//移除rsd链接,不用XML-RPC接口可以关闭输出
remove_action( 'wp_head', 'rsd_link' );
//移除dns-prefetch
remove_action('wp_head', 'wp_resource_hints', 2);
//移除wlwmanifest(Windows Live Writer接口)
remove_action( 'wp_head', 'wlwmanifest_link' );
//移除当前页面的索引
remove_action( 'wp_head', 'index_rel_link' );
//移除后面文章的url
remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 );
//移除最开始文章的url
remove_action( 'wp_head', 'start_post_rel_link', 10, 0 );
//移除前后文meta信息
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head');
//移除相邻文章的url
remove_action( 'wp_head', 'adjacent_posts_rel_link', 10, 0 );
//移除检查当前页面的检测(以下也可以不用加)
remove_filter('rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10, 4);
remove_filter('oembed_response_data',   'get_oembed_response_data_rich',  10, 4);
//移除古腾堡编辑器样式block-library CSS
function remove_block_library_css() {
wp_dequeue_style( 'wp-block-library' );
}
add_action( 'wp_enqueue_scripts', 'remove_block_library_css', 100 );
//移除pingbacks, enclosures, trackbacks
remove_action('do_pings', 'do_all_pings');
//移除_encloseme 和 do_ping 操作。
remove_action('publish_post', '_publish_post_hook');
//彻底禁用Pingback与Trackback
add_filter('wp_headers', function($headers, $wp_query){
    if(isset($headers['X-Pingback'])){
        unset($headers['X-Pingback']);
    }
    return $headers;
}, 11, 2);
add_filter('pre_option_enable_xmlrpc', function($state){
    return '0';
});
add_action('wp', function(){
    remove_action('wp_head', 'rsd_link');
}, 9);
add_filter('bloginfo_url', function($output, $property){
    return ($property == 'pingback_url') ? null : $output;
}, 11, 2);
add_action('xmlrpc_call', function($method){
    if($method != 'pingback.ping') return;
    wp_die(
        'Pingback functionality is disabled on this Blog.',
        'Pingback Disabled!',
        array('response' => 403)
    );
});
//禁止current_screen
add_filter('current_screen', '__return_false', 1);
//禁止translations_api
add_filter('translations_api', '__return_true', 1);
//禁止wp_check_browser_version
add_filter('wp_check_browser_version', '__return_false', 1);
//禁止wp_check_php_version
add_filter('pre_site_transient_{$transient}', '__return_true', 1);
//禁用后台登录页语言切换
add_filter( 'login_display_language_dropdown', '__return_false' );
/*整体移除页面还会显示的 结束*/
//禁止谷歌地图(国外主题多)
//add_filter( 'avf_load_google_map_api', '__return_false' );
//禁止每个页面加载Contact Form7(表单)
//add_filter( 'wpcf7_load_js', '__return_false' );
//add_filter( 'wpcf7_load_css', '__return_false' );
/*//禁用Heartbeat API(自动存储草稿,每隔15秒向服务器发送ajax调用,如果出错可以删掉,建议保留)
add_action( 'init', 'stop_heartbeat', 1 );
function stop_heartbeat() {
wp_deregister_script('heartbeat');
}*/
 
// 只为已登录用户加载dashicons
add_action( 'wp_enqueue_scripts', 'bs_dequeue_dashicons' );
function bs_dequeue_dashicons() {
    if ( ! is_user_logged_in() ) {
        wp_deregister_style( 'dashicons' );
    }
}
/*//禁用Gutenberg编辑器(看个人习惯,我个人博客在用,更建议用官方插件)
add_filter('use_block_editor_for_post', '__return_false');
remove_action( 'wp_enqueue_scripts', 'wp_common_block_scripts_and_styles' );
add_filter( 'use_widgets_block_editor', '__return_false' );
add_filter( 'gutenberg_use_widgets_block_editor', '__return_false', 100 );
 
//禁用小工具区块编辑模式
add_filter( 'gutenberg_use_widgets_block_editor', '__return_false' );
add_filter( 'use_widgets_block_editor', '__return_false' );
*/
//禁用版本修订(放到wp-config)
define('WP_POST_REVISIONS', false);
//如果这句加进去还有其他不连贯,可以用下面的
/*彻底关闭修订版本(id不连贯) 开始*/
function keep_id_continuous(){
global $wpdb;
//删掉自动草稿和修订版
$wpdb->query("DELETE FROM `$wpdb->posts` WHERE `post_status` = 'auto-draft' OR `post_type` = 'revision'");
//自增值小于现有最大ID,MySQL会自动设置正确的自增值
$wpdb->query("ALTER TABLE `$wpdb->posts` AUTO_INCREMENT = 1");
}
//将函数钩在新建文章、上传媒体和自定义菜单之前。
add_filter( 'load-post-new.php', 'keep_id_continuous' );
add_filter( 'load-media-new.php', 'keep_id_continuous' );
add_filter( 'load-nav-menus.php', 'keep_id_continuous' );
//禁用文章自动保存
add_action('wp_print_scripts','fanly_no_autosave');
function fanly_no_autosave(){
    wp_deregister_script('autosave');
}
//禁用文章修订版本
add_filter( 'wp_revisions_to_keep', 'fanly_wp_revisions_to_keep', 10, 2 );
function fanly_wp_revisions_to_keep( $num, $post ) { return 0;}
/*彻底修订版本(id不连贯) 结束*/
 
//禁止图片超过2500像素压缩
add_filter('big_image_size_threshold', '__return_false');
//禁止响应式图片
function disable_srcset( $sources ) {
return false;
}
add_filter( 'wp_calculate_image_srcset', 'disable_srcset' );
//禁止自动生成图片尺寸
function shapeSpace_disable_image_sizes($sizes) {
    
    unset($sizes['thumbnail']);    // disable thumbnail size
    unset($sizes['medium']);       // disable medium size
    unset($sizes['large']);        // disable large size
    unset($sizes['medium_large']); // disable medium-large size
    unset($sizes['1536x1536']);    // disable 2x medium-large size
    unset($sizes['2048x2048']);    // disable 2x large size
    
    return $sizes;
    
}
add_action('intermediate_image_sizes_advanced', 'shapeSpace_disable_image_sizes');
//禁止其他图片尺寸
function shapeSpace_disable_other_image_sizes() {
    
    remove_image_size('post-thumbnail'); // disable images added via set_post_thumbnail_size()
    remove_image_size('another-size');   // disable any other added image sizes
    
}
add_action('init', 'shapeSpace_disable_other_image_sizes');
 
//禁止Wordpress邮箱管理员验证
add_filter('admin_email_check_interval', '__return_false');
 
//重定向?author
add_action('template_redirect', 'disableAuthorUrl');
function disableAuthorUrl(){
    if (is_author())) {
       wp_redirect(home_url());
       exit();
    }
}
 
//移除comment-reply.min.js(如果不用评论)
function crunchify_clean_header_hook() {
    wp_deregister_script( 'comment-reply' );
}
add_action('init','crunchify_clean_header_hook');
 
//15移除jquery-migrate.min.js(兼容老jquery库,有的主题默认不启用)
function isa_remove_jquery_migrate( &$scripts ) {
    if( !is_admin() ) {
        $scripts->remove( 'jquery' );
        $scripts->add( 'jquery', false, array( 'jquery-core' ), '1.12.4' );
    }
}
add_filter( 'wp_default_scripts', 'isa_remove_jquery_migrate' );
 
//16禁用cron(定时任务,放到wp-config.php)
define('DISABLE_WP_CRON', true);
 
//关闭更新检查定时作业
    remove_action('init', 'wp_schedule_update_checks');
//移除已有的版本检查定时作业
    wp_clear_scheduled_hook('wp_version_check');
//移除已有的插件更新定时作业
    wp_clear_scheduled_hook('wp_update_plugins');
//移除已有的主题更新定时作业
    wp_clear_scheduled_hook('wp_update_themes');
//移除已有的自动更新定时作业
    wp_clear_scheduled_hook('wp_maybe_auto_update');
//移除后台内核更新检查
    remove_action('admin_init', '_maybe_update_core');
//移除后台插件更新检查
    remove_action('load-plugins.php', 'wp_update_plugins');
    remove_action('load-update.php', 'wp_update_plugins');
    remove_action('load-update-core.php', 'wp_update_plugins');
    remove_action('admin_init', '_maybe_update_plugins');
//移除后台主题更新检查
    remove_action('load-themes.php', 'wp_update_themes');
    remove_action('load-update.php', 'wp_update_themes');
    remove_action('load-update-core.php', 'wp_update_themes');
    remove_action('admin_init', '_maybe_update_themes');
 
 
//自动给图片加上alt/title
function content_img_add_alt_title($content)
{
    global $post;
    preg_match_all('/<img (.*?)\/>/', $content, $images);
    if (!is_null($images)) {
        foreach ($images[1] as $index => $value) {
            $new_img = str_replace('<img', '<img title=' . $post->post_title . '
             alt=' . $post->post_title, $images[0][$index]);
            $content = str_replace($images[0][$index], $new_img, $content);
        }
    }
    return $content;
}
 
add_filter('the_content', 'content_img_add_alt_title', 99);
 
//19-删除XFN (XHTML Friends Network) Profile 链接 和 Pingback URL
<link rel="profile" href="http://gmpg.org/xfn/11">
<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>">
//找到header.php删了就行
 
/*后台优化*/
//禁用后台右上角帮助
add_action('in_admin_header', function(){
  global $current_screen;
  $current_screen->remove_help_tabs();
});
 
//禁用后台右上角选项
add_action('in_admin_header', function(){
  add_filter('screen_options_show_screen', '__return_false');
  add_filter('hidden_columns', '__return_empty_array');
});
 
//禁用Admin Bar(登录之后顶部栏)
add_filter( 'show_admin_bar', '__return_false' );
 
//屏蔽后台页脚WordPress版本信息
function change_footer_admin () {return '';}
add_filter('admin_footer_text', 'change_footer_admin', 9999);
function change_footer_version() {return '';}
add_filter( 'update_footer', 'change_footer_version', 9999);
 
//隐藏后台标题中的“—— WordPress”
add_filter('admin_title', 'zm_custom_admin_title', 10, 2);
function zm_custom_admin_title($admin_title, $title){
    return $title.' ‹ '.get_bloginfo('name');
}
 
//隐藏登录页面标题中的“WordPress”
add_filter('login_title', 'zm_custom_login_title', 10, 2);
    function zm_custom_login_title($login_title, $title){
        return $title.' ‹ '.get_bloginfo('name');
}
 
//隐藏左上角WordPress标志
function hidden_admin_bar_remove() {
    global $wp_admin_bar;
        $wp_admin_bar->remove_menu('wp-logo');
}
add_action('wp_before_admin_bar_render', 'hidden_admin_bar_remove', 0);
 
//27隐藏后台状态
function disable_dashboard_widgets() {  
remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal');
//近期评论
remove_meta_box('dashboard_recent_drafts', 'dashboard', 'normal');
//近期草稿
remove_meta_box('dashboard_primary', 'dashboard', 'core');
//wordpress博客  
remove_meta_box('dashboard_secondary', 'dashboard', 'core');
//其它新闻  
remove_meta_box('dashboard_right_now', 'dashboard', 'core');
//wordpress概况  
remove_meta_box('dashboard_incoming_links', 'dashboard', 'core');
//wordresss链入链接  
remove_meta_box('dashboard_plugins', 'dashboard', 'core');
//链入插件  
remove_meta_box('dashboard_quick_press', 'dashboard', 'core');
//快速发布
remove_meta_box( 'dashboard_activity', 'dashboard', 'normal');
//动态
}  
add_action('admin_menu', 'disable_dashboard_widgets');

转自:https://www.jingxialai.com/2402.html

本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: wordpress
最后更新:2024-03-11

wking

不管博客型博主

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

标签聚合
大航海时代 wordpress 一支红杏 C++ win10 linux R6300V2 OneNote

COPYRIGHT © 2024 wkings.blog. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang