Tag: 优化

3 Posts

thumbnail
WordPress优化,宝塔(BT)面板,CPU占用100%解决办法一例
看到多个人搜索,遭遇到宝塔面板安装WordPress遇到 CPU占用资源经常100%的情况 刚好我也遇到了一例,所以写出来,希望能帮到有需要的人 我的服务器配置 CPU: 双核 内存: 4G 数据库:MySQL 5.6.47 服务器:Nginx 1.16.1 CMS: WordPress5.4 本站使用的是WordPress。WordPress的速度非常非常非常糟糕,在只有几百篇文章的情况下,速度已经非常不理想。WordPress 太耗CPU,本站的思路是通过缓存降低使用CPU的频率,达到加速访问。 本站通过优化后,原本每次加载在16s左右优化到了2s左右。提高了八倍的速度。(本次教程不拿我的站点演示) 优化过程 为了提高速度,尝试了多种方法(原教程提供了多种思路,但本站仅提供我使用的几种方法): memcached (缓存) redis(缓存) 预缓存(wp-rocket插件) 现阶段最适合的优化 预缓存,使用wp-rocket插件,将html页面静态化, 原理也非常简单 那就是把网页文件预先生成html,直接保存在磁盘上 但是到了wordpress,提供了更多的优化方式: 比如访问方法: 可以直接通过服务器的Rewrite访问,不经php,这样是最快的 可以通过php,不经数据库 也可以通过php,再经数据库 也可以直接生成html静态的路径 缓存文件: 可以是html 可以是压缩的html(html.gz) 可以是php格式的 存储介质: 可以存在磁盘上 也可以直接存在内存中 尝试的插件 试用过的插件有下面这些: wp-rocket wp-super-cache WPJAM Basic 解决办法 因为我的服务器已经维护优化过了,当然也不可能重新倒回去再来一次吧。所以我找朋友要了台服务器,给他的博客优化一遍。 这是他的服务器配置,1H1G至于多少宽带就不知道了,但我只只知道用网站测速工具他的站点立马就爆了。 看似任务很艰巨,因为这配置不知道优化后会成什么样,死马当活马医吧,开干。 安装memcached和redis 先去他的网站管理里找到他博客站点,看一下他使用的PHP版本,emmm是php-70,所以我们现在就去软件商店里,找到php-70,设置→安装扩展→安装memcached和redis。等待安装好。 然后再去软件商店里找到memcached和redis,分别再安装一次。   用Bt(宝塔面板)的远程下载的功能来完成下载所需要的redis文件 方法一:ssh工具登录vps来下载一些必要的东西 SSH工具登陆VPS后,定位到你的网站根目录,比如网站目录:/www/wwwroot/r-blog.cn;运行下方命令定位到所需网站的根目录 cd /www/wwwroot/r-blog.cn #请修改成你自己网站的实际目录) 然后运行下方命令下载所需的文件 wget http://uploads.staticjw.com/ji/jim/predis.php 再运行下方命令修改权限 chown www.www ./predis.php 再运行下方命令下载前端缓存的PHP脚本 wget https://gist.githubusercontent.com/JimWestergren/3053250/raw/d9e279e31cbee4a1520f59108a4418ae396b2dde/index-with-redis.php 修改权限 chown www.www ./index-with-redis.php 再用下方命令替换原网站目录的文件index.php,回车确定(这里说下,你可以备份下你的原来的index.php文件 ,如果你要还原可以直接删除掉这个然后用原来的还原。) mv index-with-redis.php index.php 至此大功告成,Redis缓存成功开启!做完这步,就开启了Redis来加速WordPress,这时远在美国机房的网站的WordPress速度照样飞快。 如果你不想登录ssh来运行这些命令,我们通过面板也是可以的。 方法二:利用宝塔板面下载 很多小白,压根不知道什么ssh登录工具,还要你去一些乱七八糟的网站下载ssh登录工具,万一带了病毒怎么办,去年连大名鼎鼎的Xshell 的官方都承认某些Xshell 的版本是有木马的。所以如果不需要ssh登录,尽量不要搞这玩意。 1、我们点击文件里面的远程下载的功能按钮 2、输入链接地址 我么在url地址这一栏输入链接地址 http://uploads.staticjw.com/ji/jim/predis.php https://gist.githubusercontent.com/JimWestergren/3053250/raw/d9e279e31cbee4a1520f59108a4418ae396b2dde/index-with-redis.php 然后,我们点击确定可以了,我们可以刷新下这个目录,就可以看到下载的东西了。下载好,可以安装前面说的修改下权限 3、修改权限 Bt(宝塔面板)如何修改权限和所有者,首页我们要选中文件,然后在后面可以看到权限这个功能,然后点击下就可以了我们简单看下截图! 第四:调试修改index-with-redis.php的一些参数 根据自己需求修改index-with-redis.php,修改如下: cf = 0; // 如果使用cloudflare,则设置为1 $debug = 1; // 如果希望查看执行时间和缓存操作,请设置为1 $display_powered_by_redis = 0; // 如果要显示带有执行时间的powered by redis消息,请设置为1 其实改不改都可以,看具体情况。 替换index.php (将原版的index.php替换成index-with-redis.php,也就是说把index.php备份并删除,将index-with-redis.php改名为index.php) ssh指令 mv index.php index.php_bk #替换到原来的index.php,也可以改nginx伪静态规则 mv index-with-redis.php index.php 宝塔直接操作就不演示了 很简单 1、缓存问题 index-with-redis.php中有注释 Appending a ?c=y to a url deletes the entire cache of the domain, only works when you are logged in Appending a ?r=y to a url deletes the cache of that url Submitting a comment deletes the cache of that page Refreshing (f5) a page deletes the cache…
thumbnail
WordPress配置腾讯云CDN并实现发布/更新文章、提交/审核评论自动清理腾讯云CDN缓存
2020年2月13日22:07:24更新 钻芒博主有话说:看到很多人还在访问这篇文章,说说我的感受,个人不建议WordPress整站折腾CDN,因为后台始终是无法绕过的,而我经过多重的CDN缓存方案都一一放弃。几乎每次上CDN都会多多少少遇到问题,全局缓存评论不好解决,绕过后台缓存进入后台的操作又非常慢。样式丢失等等问题让我在折腾很久后最终放弃WordPress整站CDN。取而代之的是动静分离方法。即动态内容放本地,静态内容放OSS或使用CDN加速。钻芒用过的CDN有腾讯云CDN、又拍云CDN、七牛云CDN、阿里云CDN、CloudFlare CDN、360奇安信。实际上各家除了功能性上的些许差异外,速度都不用担心。目前钻芒博客用到的有又拍云、阿里云和360。当然你头一次接触搞搞也是没有坏处的,搞一搞就有经验了。或许你还能找到CDN完美缓存WordPress的策略了呢。有问题可以在底部留言看到后会回复 博客在CDN是加了又下,下了又加。昨天访问张戈博客学习的时候,感叹大牛的站优化的就是好!惊叹速度快之余发现张戈博客的服务器在国外,而且配置也不是很高。(优化出奇迹) 网站速度的提升无论对用户体验以及对seo都是极好的。在看看我这个1h1m的小弱鸡。(摇头摇头) 实际上网站的访问速度并不是完全依赖于去给服务器堆硬件配置,这方面就包含很多知识了。服务器地理位置距离、网站内部优化、不同运营商之间的线路解析、缓存cdn分发等等都决定着网站的速度。当然我们可以扬长避短,取长补短。 WordPress套一层CDN提升网站访问速度。 cdn可以解决不同位置的文件分发问题,但我觉得优化wordpress网站速度主要还是靠cdn提供的缓存功能, 通过cdn控制台设置缓存页面内容,用户直接访问到的是cdn层的缓存,在结合cdn的跨区域分发。提速明显! 为此,我把博客固定链接结构改成了/%post_id%.html,然后在cdn配置缓存,html页面似乎更利于cdn缓存(这个我也不太懂,发现很多大佬都是这样设置) 关于更改固定链接后之前的文章链接无法访问,可以参考这篇文章:wordpress更改固定链接后旧链接301跳转当前固定连接 wordpress更改固定链接后旧链接301跳转当前固定连接 博客之前用固定链接是/archives/%post_id% 链接形式:https://www.zmki.cn/archi… 正文开始: 配置腾讯云CDN 注册腾讯云账号开通CDN这个不多说。 开通之后开通域名,新用户还送流量包,可以根据自己的需求选择套餐 回源配置: 由于我使用的是腾讯云的服务器,好像支持什么Range回源配置,源站类型我选择自主回源,源站地址就填写服务器ip。 缓存配置 主要是缓存静态内容,缓存时间我设置的7天。 不缓存 后台/wp-admin 登录页面/wp-login.php 静态文件.php;.jsp;.asp;.aspx 其他的都设置缓存   发布/更新文章、提交/审核评论自动清理腾讯云CDN缓存 把下边的代码放到当前主题functions.php中(替换代码里的SecretId 及 $secretKey) /* 需要填写你的密钥,访问 https://console.qcloud.com/capi 获取 SecretId 及 $secretKey */ $secretKey = '你的secretKey '; $secretId = '你的SecretId '; //更新或发布文章清理本文和首页CDN缓存 add_action('publish_post', 'Clean_By_Publish', 0); //提交评论更新本文CDN缓存 add_action('comment_post', 'Clean_By_Comments',0); //评论被审核更新本文CDN缓存 add_action('comment_unapproved_to_approved', 'Clean_By_Approved',0); //发布文章更新CDN缓存函数 function Clean_By_Publish($post_ID){ global $secretKey,$secretId; $url = get_permalink($post_ID); $action='RefreshCdnUrl'; /*要清理的页面,默认包含首页和文章页面,需要清理其他页面请自行发挥*/ $PRIVATE_PARAMS = array( 'urls.0' => 'https://www.zmki.cn/', /*提交首页刷新,修改成自己的网站首页*/ 'urls.1' => $url , ); $HttpUrl="cdn.api.qcloud.com"; /*除非有特殊说明,如MultipartUploadVodFile,其它接口都支持GET及POST*/ $HttpMethod="POST"; /*是否https协议,大部分接口都必须为https,只有少部分接口除外(如MultipartUploadVodFile)*/ $isHttps =true; /*下面这五个参数为所有接口的 公共参数;对于某些接口没有地域概念,则不用传递Region(如DescribeDeals)*/ $COMMON_PARAMS = array( 'Nonce' => rand(), 'Timestamp' =>time(NULL), 'Action' =>$action, 'SecretId' => $secretId, ); /***********************************************************************************/ CreateRequest($HttpUrl,$HttpMethod,$COMMON_PARAMS,$secretKey, $PRIVATE_PARAMS, $isHttps); } //提交评论清理文章CDN函数 function Clean_By_Comments($comment_id) { global $secretKey,$secretId; $comment = get_comment($comment_id); $url = get_permalink($comment->comment_post_ID); $action='RefreshCdnUrl'; /*参数*/ $PRIVATE_PARAMS = array( 'urls.0' => $url, ); $HttpUrl="cdn.api.qcloud.com"; /*除非有特殊说明,如MultipartUploadVodFile,其它接口都支持GET及POST*/ $HttpMethod="POST"; /*是否https协议,大部分接口都必须为https,只有少部分接口除外(如MultipartUploadVodFile)*/ $isHttps =true; /*下面这五个参数为所有接口的 公共参数;对于某些接口没有地域概念,则不用传递Region(如DescribeDeals)*/ $COMMON_PARAMS = array( 'Nonce' => rand(), 'Timestamp' =>time(NULL), 'Action' =>$action, 'SecretId' => $secretId, ); /***********************************************************************************/ CreateRequest($HttpUrl,$HttpMethod,$COMMON_PARAMS,$secretKey, $PRIVATE_PARAMS, $isHttps); } //评论被审核清理CDN缓存函数 function Clean_By_Approved($comment) { global $secretKey,$secretId; $url = get_permalink($comment->comment_post_ID); $action='RefreshCdnUrl'; /*参数*/ $PRIVATE_PARAMS = array( 'urls.0' => $url, ); $HttpUrl="cdn.api.qcloud.com"; /*除非有特殊说明,如MultipartUploadVodFile,其它接口都支持GET及POST*/ $HttpMethod="POST";…