Products
GG网络技术分享 2025-03-18 16:13 0
这是第二篇关于WordPress网站性能优化技术文章,本文针对服务器环境对WP速度深入解读分享。建议SEO和站长从业人员学习研究之用。
速度与性能
这里的服务器优化不包含虚拟主机方面的优化,服务器的优化第一步就是选择一款靠谱的服务器,比如阿里云ECS,腾讯云,百度云,其他阿猫阿狗云或者是VPS都可以。需要有服务器的 Root管理员权限,才可以自定义安装种类环境组件。
1,安装Memcached和 PHP Memcached扩展:
首先服务器需要安装 Memcached 服务端,然后 PHP 需要安装上 Memcached 的扩展,再次注意 PHP 有两个扩展:PHP Memcache 扩展 和 PHP Memcached 扩展,两者仅仅相差一个字母 D,你可以通过 phpinfo() 这个 PHP 函数来查看到底安装的是哪个扩展,一定要使用 PHP Memcached 扩展。
服务器性能优化
附送上相应的插件下载地址:
2,PHP 开启 OPCache:
把经过编译后的 PHP 代码缓存到共享内存中,并在用户访问的时候直接调用从而起到高效的加速作用。
服务器性能优化
3,MySQL 设置 MySQL Query Cache,可以保存保存查询结果,同样的查询不再从数据库检索,对速度有很大的提升。
通过chrome浏览器查看到的网页加载time时间线,数值越小越快。
服务器性能优化
经过一系统加速优化后,网页加载毫秒时间。
服务器性能优化
要使用memcache缓存,需要PHP支持,没有的需要安装模块,查看是否已经安装模块的方法如下:
在网站根目录下建立一个php文件,里面写上如下代码:
浏览器中访问这个文件,将会返回当前PHP的所有信息,查找memcache关键字,如果存在则已安装,如果没有则需要安装才能使用。
query cache缓存可以将相同的查询存下来,第二次查询的时候MySQL就不会再去做同样的操作,而是直接将结果返回给用户。从根本是减少了数据库的查询次数,从而节省了响应时间,提高用户体验。提升动态网站速度,减少数据库查询次数是几大重点之一,除了利用静态化来减少查询之外,开启MySQL高速缓存query cache 也是一个重要的手段。
前检查MySQL数据库是否支持query cache 高速缓存
如果变量have_query_cache的值是yes则支持
开启缓存
在MYSQL的配置文件my.ini或my.cnf中加入如下内容(有的只需要取消注释即可):
为0表示不开启,建议设置为32M
query_cache_type=1
query_cache_type参数用于控制缓存的类型,注意这个值不能随便设置,必须设置为数字,可选项目以及说明如下:
把所有的组件配置好之后再进行相应配置,修改wp-config.php文件中的配置,如下(没有就直接添加即可)
好了,到这里再看看你的WordPress网站打开速度有没提升上来。
一般来说如果上面的步骤都做了,你的WordPress网站打开速度应该在1秒以内,一般只需0.X秒即可打开网站,如果有图片等大资源,配上CDN会更快。
在WP底部添加以下代码,可查看到网页的加载秒数和数据查询次数。(比如 0.044 秒内总共 6 次查询)
到此sql查询次数也会降低至10次以内,不同的主题代码优化不一致。
另外,行业牛人博客 (WordPress 果酱 – 我爱水煮鱼)的页面生成时间:0.000xxx秒,真的让人佩服啊,怪不得人家推出付费加速优化费用,如图:
行业大牛示例
(家里有矿的,强烈推荐花1W元在进行加速优化,我等穷B只能膜拜了)本文只为举例。
需要说明的是,由于虚拟主机由于受主机商限止无法安装组件,达不到服务器最佳的效果,建议使用服务器将性能发挥到极致。
SEO与速度优化
PS,如果你不懂技术又无法忍受WordPress博客的乌龟速度,可以联系无忧哥为你WP网站进行提速,尽可能达到最底加载请求,实现网页秒开效果。
请提供你的虚拟主机空间或者云服务器,相关博客后台账号密码,服务器用户名密码,帮你进行最大化的优化。
思路:使用Ajax自动提交请求增加文章阅读数,Cookie记录是否已经提交,避免刷新重复提交。
JS代码(保存为views.js):
//获取Cookiefunction getCookie(name) {var str = document.cookie;var arr = str.split(\\\'; \\\');for(var i=0; i<arr.length; i++) {var c = arr[i].split(\\\'=\\\');if(c[0] == name) {return c[1];}}return false;}//Ajax请求function setPostmeta(varname, postid, target) {var cookie = getCookie(varname);if(cookie) return;jQuery.ajax({cache: false,url: ajax_object.ajax_url,type: \\\'POST\\\',data: {\\\'action\\\': \\\'add_views\\\',\\\'post_id\\\': postid,},dataType: \\\'JSON\\\',async: true,success:function(result) {if(result.status == \\\'success\\\') {if(target) target.text(result.views);var exdate = new Date();exdate.setDate(exdate.getDate() + 360);document.cookie = varname + \\\'=\\\' + result.views + \\\'; expires=\\\' + exdate.toGMTString() + \\\'; path=/\\\';}}});}
functions.php中添加如下代码:
//加载JS以及设置Ajax对象function bzg_load_scripts() {if(!is_single()) return;wp_enqueue_script(\\\'views\\\', get_theme_file_uri(\\\'/js/views.js\\\'), \\\'jquery\\\');wp_localize_script(\\\'views\\\', \\\'ajax_object\\\', array(\\\'ajax_url\\\' => admin_url(\\\'admin-ajax.php\\\')));}add_action(\\\'wp_enqueue_scripts\\\', \\\'bzg_load_scripts\\\');//获取文章阅读数function bzg_post_views($postid=\\\'\\\') {global $post;if(!$postid && isset($post->ID)) {$postid = $post->ID;}if(!$postid) return 0;$views = get_post_meta($postid, \\\'views\\\', true);echo $views ? $views : 0;}//Ajax添加阅读数function bzg_set_post_views() {if(!isset($_POST[\\\'post_id\\\'])) return;$post_id = (int) $_POST[\\\'post_id\\\'];if(get_post_status($post_id) === false) return;$views = get_post_meta($post_id, \\\'views\\\', true);if(!$views) $views = 0;$views = $views+1;update_post_meta($post_id, \\\'views\\\', $views);wp_send_json(array(\\\'status\\\' => \\\'success\\\',\\\'views\\\' => $views,));}add_action(\\\'wp_ajax_add_views\\\', \\\'bzg_set_post_views\\\');add_action(\\\'wp_ajax_nopriv_add_views\\\', \\\'bzg_set_post_views\\\');
single.php中调用JS函数:
<script type=\\\"text/javascript\\\">var target = jQuery(\\\".views\\\");var post_id = <?php echo $id; ?>;setPostmeta(\\\"views_\\\" + post_id, post_id, target);</script>
target是显示文章阅读数的标签,在需要显示文章阅读数的地方这样调用:
<span >阅读:<?php bzg_post_views(); ?></span>
缺点是最新的阅读数不能实时显示,毕竟CDN缓存了页面,不过计数是正常写入到数据库的。
Demand feedback