WordPress是一款非常好的CMS管理系统,基本上90%的PHP博客都会采用这样的内容管理系统,其主要原因在于便利、稳定、模板和插件丰富,基本上只要会上网的就会搭建属于自己的博客网站。但是大部分用户仅仅停留在使用程序上,随着时间的推移我们会发现自己的博客打开速度慢很多,而且会占用CPU暴涨的情况最糟糕的是用户打开页面的时间需要等上好几秒严重影响网站的用户体验。今天我们就从头开始一步一步的对wp程序做一次优化,效果非常的明显而且全是用代码片段来实现不会增加网站的负载情况。 禁止后台加载谷歌字体要想打理好网站首先必须给我们管理员提供一个比较快速的管理后台,这是由于Wordpress后台外链加载了谷歌字体(代码位置在wordpress\wp-includes\script-loader.php第580行),而谷歌服务器大家都知道的原因国内访问困难,严重影响页面加载速度。那么第一步就从后台入手先通过代码把这个字体给屏蔽掉。 - /*
- * 禁止后台加载谷歌字体
- */
- function wp_remove_open_sans_from_wp_core() {
- wp_deregister_style( ‘open-sans’ );
- wp_register_style( ‘open-sans’, false );
- wp_enqueue_style(‘open-sans’,”);
- }
- add_action( ‘init’, ‘wp_remove_open_sans_from_wp_core’ );
通过上述代码我们可以成功的屏蔽谷歌字体加载慢的问题,现在大家进入后台试试是不是比之前快了。后台优化完我们来看看前台有哪些需要优化的地方吧! 删除4.2版本后自动添加的emoji脚本WordPress 4.2及以上版本,会自动在网站前台加入一段用于支持emjo 表情的脚本(JS+CSS),对于国内大部分站长来说,这个功能是没什么用处的,另外由于(JS+CSS)均托管在国外的服务器上,反而影响网站前台的加载速度。 前台自动添加的emoji脚本代码如下:
如果在查看你网页源代码的时候发现类似上面的代码出现在头部就可以用下面的代码屏蔽掉以此来加速网站的加载速度。
- //删除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_filter( ‘the_content_feed’, ‘wp_staticize_emoji’);
- remove_filter( ‘comment_text_rss’, ‘wp_staticize_emoji’);
- remove_filter( ‘wp_mail’, ‘wp_staticize_emoji_for_email’);
删除4.4版本自动添加的wp-json链接WordPress 4.4更新新增了REST API功能,通过REST API可以很轻松的获取网站的数据,但是这个功能并不是每个网站都需要的,或者说我需要,但是并不希望他在head里面输出,所以给大家介绍下禁用REST API或者说移除head里面wp-json链接的方法。 前台自动添加的wp-json代码如下:
既然这个功能我们用不到那么果断屏蔽掉它把下面的代码添加到主题functions.php文件中即可: - //移除wp-json链接
- add_filter(‘rest_enabled’, ‘_return_false’);
- add_filter(‘rest_jsonp_enabled’, ‘_return_false’);
- remove_action( ‘wp_head’, ‘rest_output_link_wp_head’, 10 );
- remove_action( ‘wp_head’, ‘wp_oembed_add_discovery_links’, 10 );
通过上面的代码我们可以成功的禁用REST API和移除wp-json链接 删除4.4版本自动引入的wp-embed.min.js文件不得不说Wordpress4.4版本着实添加了不少功能,上面处理完REST API功能下面我们来看看怎么屏蔽embeds功能,这个功能可以允许更方便的引用第三方资源,但是对于大部分人来说真的很鸡肋。
如果你的网站升级到4.4版本会在底部引入了wp-embed.min.js这个文件,如果用不到可以通过下面的代码屏蔽也可以安装WP官方的Disable Embeds插件来屏蔽。 - //禁用embeds功能
- function disable_embeds_init() {
- /* @var WP $wp */
- global $wp;
- $wp->public_query_vars = array_diff( $wp->public_query_vars, array(
- ’embed’,
- ) );
- remove_action( ‘rest_api_init’, ‘wp_oembed_register_route’ );
- add_filter( ’embed_oembed_discover’, ‘__return_false’ );
- remove_filter( ‘oembed_dataparse’, ‘wp_filter_oembed_result’, 10 );
- remove_action( ‘wp_head’, ‘wp_oembed_add_discovery_links’ );
- remove_action( ‘wp_head’, ‘wp_oembed_add_host_js’ );
- add_filter( ‘tiny_mce_plugins’, ‘disable_embeds_tiny_mce_plugin’ );
- add_filter( ‘rewrite_rules_array’, ‘disable_embeds_rewrites’ );
- }
- add_action( ‘init’, ‘disable_embeds_init’, 9999 );
- function disable_embeds_tiny_mce_plugin( $plugins ) {
- return array_diff( $plugins, array( ‘wpembed’ ) );
- }
- function disable_embeds_rewrites( $rules ) {
- foreach ( $rules as $rule => $rewrite ) {
- if ( false !== strpos( $rewrite, ’embed=true’ ) ) {
- unset( $rules[ $rule ] );
- }
- }
- return $rules;
- }
- function disable_embeds_remove_rewrite_rules() {
- add_filter( ‘rewrite_rules_array’, ‘disable_embeds_rewrites’ );
- flush_rewrite_rules();
- }
- register_activation_hook( __FILE__, ‘disable_embeds_remove_rewrite_rules’ );
- function disable_embeds_flush_rewrite_rules() {
- remove_filter( ‘rewrite_rules_array’, ‘disable_embeds_rewrites’ );
- flush_rewrite_rules();
- }
- register_deactivation_hook( __FILE__, ‘disable_embeds_flush_rewrite_rules’ );
这段代码提取自Disable Embeds插件,代码比较多,把上面的代码复制到主题的functions.php文件即可。 删除head头部多余脚本我们在使用WP的时候如果主题优化做的不好的话会发现网站源代码的头部会加载很多我们不知道或者不需要的代码像WP程序的版本、文章的上下篇、远程离线编辑器接口、当前页面的索引和自动生成的短链接等如果有这种代码就可以用下面的代码去屏蔽掉。操作方法也很简单直接把代码复制到主题的functions.php文件中即可。 - remove_action( ‘wp_head’, ‘feed_links_extra’, 3 ); //去除评论feed
- remove_action( ‘wp_head’, ‘feed_links’, 2 ); //去除文章feed
- remove_action( ‘wp_head’, ‘rsd_link’ ); //针对Blog的远程离线编辑器接口
- remove_action( ‘wp_head’, ‘wlwmanifest_link’ ); //Windows Live Writer接口
- remove_action( ‘wp_head’, ‘index_rel_link’ ); //移除当前页面的索引
- remove_action( ‘wp_head’, ‘parent_post_rel_link’, 10, 0 ); //移除后面文章的url
- remove_action( ‘wp_head’, ‘start_post_rel_link’, 10, 0 ); //移除最开始文章的url
- remove_action( ‘wp_head’, ‘wp_shortlink_wp_head’, 10, 0 );//自动生成的短链接
- remove_action( ‘wp_head’, ‘adjacent_posts_rel_link’, 10, 0 ); ///移除相邻文章的url
- remove_action( ‘wp_head’, ‘wp_generator’ ); // 移除版本号
代码控制的项目比较多,取自己需要的即可! 用多说加速Gravatar头像自从2014国家净网行动以来,国内进行了各种严打,很多网站因此关闭。这不,Gravatar头像服务也不能幸免于难,现在在国内已经基本上彻底被墙了,如果我们还在用默认的Gravatar头像的话网站会加载的很慢,但是头像功能对于博客来说又非常的实用,通过下面的这段代码我们可以把Gravatar头像通过多说的服务器来加载。 - //通过多说服务器加速Gravatar头像
- function mytheme_get_avatar($avatar) {
- $avatar = str_replace(array(“www.gravatar.com”,“0.gravatar.com”,“1.gravatar.com”,“2.gravatar.com”),“gravatar.duoshuo.com”,$avatar);
- return $avatar;
- }
- add_filter( ‘get_avatar’, ‘mytheme_get_avatar’, 10, 3 );
原理也非常简单,wp默认的是用www.gravatar.com、0.gravatar.com、1.gravatar.com、2.gravatar.com 这四个来加载头像图片的,通过上面的代码我们把这些域名替换成多说的gravatar.duoshuo.com这样问题就解决了。上面提供的代码只需添加到functions.php就好了。非常简单而且方便,相信可以让你的网站访问速度快上一大截。
|