WordPress网站优化加速,最近又对网站做了哪些更改

作为一个WordPress站长,总是想让自己的网站足够快,用户的体验足够好。当前,WordPress的安全性问题也是不得不考虑解决的。今天,就来分享下冰沫记这个网站从建站初期到最近这段时间,古哥所做过的那些改变。当然,本文主要包括的内容就是网站首次访问速度、网站二次加载速度、网站安全性问题解决。

WordPress网站优化加速,最近又对网站做了哪些更改

WordPress建站环境

熟悉我的人,肯定知道我习惯用apache建站。我所使用的环境从建站初期一直都是lamp,lamp指的是linux(我习惯用centos)、apache、mysql、php。具体的版本号,参考如下:

项目版本号
Centos系统Centos 7.8
Apache2.4
MySQL5.7
PHP7.4
Memcached1.6
WordPress6.1(最新)

WordPress速度优化

一个网站的访问速度,取决于两个因素。第一个是首次访问速度,第二个就是二次访问速度。下面,我们分别介绍这两个方面是如何优化的。

首次访问优化

这个优化方面,主要是服务器方面和WordPress方面。我们所做的优化分别有:hsts预加载列表、opcache缓存php解析结果、memcached缓存数据库查询结果、Autoptimize优化css等资源、Async JavaScript异步加载js。

hsts预加载列表,可以理解为:用户在访问网站时,会判断你是http网站还是https网站。通过这个预加载列表,可以实现在用户访问之前就能知道是https。这里我用的apache,给出apache关于hsts配置内容如下:

 Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"

上述代码放于网站配置文件中,一般是httpd.conf文件等网站配置文件。宝塔界面,可以直接点击网站,设置,切换到配置文件选项,添加内容即可。

WordPress网站优化加速,最近又对网站做了哪些更改

然后,再到https://hstspreload.org/网站,提交一下你的网站。之后,各大主流浏览器就会内置你的域名到他们的hsts列表中,直接内置到浏览器中。

WordPress网站优化加速,最近又对网站做了哪些更改

opcache缓存php解析结果,这个部分就比较简单了,宝塔软件商店找到你安装的php版本,点击设置,切换到安装扩展选项,安装opcache扩展即可,就不做过多演示了。

关于memcached缓存数据库查询结果的问题,我们在以前的文章已经提过很多遍了,这里再提一句:你需要安装memcached以及php中安装memcached扩展(宝塔安装memcached也是这么逻辑)。最后,再到wordpress中添加配置即可。当然,你可以参考我之前写的教程:《WordPress使用Memcached缓存数据库查询结果》。

最后,Autoptimize优化css等资源以及Async JavaScript异步加载js都是使用的WordPress插件,这里我觉得你不要过分排斥WordPress插件。除非你认为插件无法实现自己的功能,才需要使用代码。也不要认为WordPress插件会影响网站访问速度,你需要知道的是我的网站用了16款插件,速度也并没有什么影响。

WordPress网站优化加速,最近又对网站做了哪些更改

当然,我还做了图片动静分离,用的是又拍云的服务,这也是不得不提的一个加速策略。毕竟,国内的服务器水管都太小,不把图片放到云存储的话,速度应该会大打折扣的。

二次访问速度

关于提升二次访问速度的问题,一方面是这个网址第二次被人访问,一方面是指这个人二次访问这个网站。相信这一点的不同,大家都是同意的。

网址被人二次访问

关于网址被人二次访问,这个提升就可以考虑将网站生成静态页面缓存,这里我推荐使用WP Super Cache这款插件,关于插件使用不懂得话就直接默认吧,也可以参考我之前写的文章:《WP Super Cache缓存插件详细设置教程》、《WP Super Cache插件使用我所推荐的设置》。当然,我最近又对WP Super Cache设置调整了一部分内容,主要是调整了缓存内容有效期,主要的设置可以参考如下截图:

我将缓存超时时间改为了432000秒,即一个页面生成的静态资源可以使用五天。每天下午五点检查页面缓存是否到期,并对到期文件进行清理。

这里,我不得不提醒一下,WordPress中存在一个随机数校验,用于安全考量,随机数会每隔一段时间会重新生成,而这个时间是随机的。那么当用户访问一个静态页面时,如果遇到随机数校验的地方,而这个随机数正好过期了,那么就会无法使用对应的功能,比如评分系统、登录系统等。

//随机数
add_filter( 'nonce_life', function () { return 288 * HOUR_IN_SECONDS; } );

上述代码(放于主题function.php中即可)将随机数时长改为288个小时,大体原因为:我的静态页面有效期五天,如果正好在下午五点前一刻生成了一个静态页面。那么这个页面的有效期就会变为六天,因为第五天下午五点清理过期缓存文件时,它还差那么几秒才到时间。所以,我虽然设置了静态页面的有效期为五天,实际上有可能出现某些页面静态有效期为五天到六天。

而WordPress提供的随机数时长修改有着如下问题:当你设置随机数有效时长为24小时,实际随机数有效时长为12-24小时随机变化的。这里,我综合考虑,将随机数时长改为了288个小时,对应12天。

访客二次访问网站

关于访客二次访问网站,这就要考虑你的资源是否在对方浏览器本地生成缓存,以及各种预加载的使用了。这里我所用到的缓存包括Service Worker缓存(WordPress使用Service Worker加速网站教程)、instant的预加载技术,我所使用的是在用户点击链接后立即开始预加载页面(当然,也可以改成当鼠标滑过链接,立即开始预加载),官方链接:https://instant.page/

WordPress安全性问题

关于WordPress安全问题,一直是大家讨论的问题,有些人也从来不注意,导致网站被人爆破才意识到安全问题。WordPress每次发布更新,你都及时更新到最新版可以一定程度上提升你网站的安全性。当然,这只是漏洞方面的升级。而从站长考虑,我们应该做的是,屏蔽掉那些可以爆破网站后台登录密码的接口,比如wp-login.php以及xmlrpc.php这两个文件。

其中,wp-login.php文件为WordPress后台登录页面,为了安全考虑请直接屏蔽掉该文件的访问。

xmlrpc.php是一个可以访问后台资源的接口,主要是方便使用WordPress官方app管理网站后台使用,完全没有存在的必要。而且,这个文件可以不断访问,不断尝试你的账号和密码,没有任何限制。大多数人网站后台被爆破都是这个原因。

那么我们该如何屏蔽以上两个文件呢,在apache中,可以使用.htaccess文件添加如下代码实现禁止访问

<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>

<Files wp-login.php>
Order Deny,Allow
Deny from all
</Files>

宝塔用户,可以将如下链接添加到url防火墙黑名单,禁止访问:

/wp-login.php
/xmlrpc.php

你可以尝试访问本站的上述两个页面,看看实际效果:

  • iymark.com/wp-login.php
  • iymark.com/xmlrpc.php

此外,请尽量避免使用破解版插件及破解版主题。

系统安全问题

这里,我提供一个思路,当然我也是这么办的。

阿里云安全组设置,只允许固定的ip或者ip段访问宝塔后台(通过端口规则设置),只允许127.0.0.1访问ssh端口(宝塔后台的ssh终端就是用的127.0.0.1本地访问ssh)。最好,你在用上宝塔的防火墙。

WordPress网站优化加速,最近又对网站做了哪些更改

谷歌广告兼百度广告

之前我痴迷于谷歌自动广告,可以参考之前写的关于谷歌广告的文章:《为什么我愿意使用谷歌广告来增加网站的盈利》。

最近,我发现谷歌的自动广告也有点乱来了,竟然在我的导航区域设置广告,极其丑陋。最终,我决定百度广告和谷歌广告均只在首页放一个单元广告,文章页面放一个单元广告,其余位置均不显示广告。文章的广告位于文章结尾处,丝毫不影响访客体验。

最近,我也想到了一个提醒访客关闭广告屏蔽插件的方法,那就是在广告单元上一级添加一个div,然后给这个div设置一个背景,背景设置为一个图片。当用户屏蔽广告后,这个图片就会显示;未屏蔽时,广告会覆盖这个图片。图片上写上一些内容提醒访客关闭广告屏蔽插件。

<div class="mine">
广告内容
<div>

对应的CSS参考:

.mine{
    background-image: url(https://oss.iymark.com/2022/12/loveme.png);
    min-height: 100px
    background-color: #fffff4;
    background-repeat: no-repeat;
}

如上div中的class请不要使用明显包含广告等字样的名称,不然也会直接被广告屏蔽插件屏蔽。

付费咨询古哥

关于WordPress类的文章写了不少,如果你还是不会操作或者实在想给古哥一点点感激,我觉得你可以考虑我的付费咨询问题。如果你是纯属为了感激,随便打赏个几块就行;如果你真的有些内容需要咨询我,我推荐你使用本站的付费内容:《WordPress 网站加速优化方案》,包括但不限于WordPress访问速度的优化。

共计5人评分,平均3.6

到目前为止还没有投票~

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

文章目录

原创文章,作者:古哥钻石会员,转载需经过作者授权同意,并附上原文链接:https://iymark.com/articles/3991.html

(10)
微信公众号
古哥古哥钻石会员管理团队
上一篇 2023年01月08日 18:22
下一篇 2023年01月09日 20:00

你可能感兴趣的文章

发表回复

登录后才能评论

评论列表(10条)

  • 微信解封平台
    微信解封平台 2023年01月11日 08:30

    nginx怎么配置HSTS啊

    • 古哥
      古哥钻石会员 2023年01月11日 09:01

      @微信解封平台add_header Strict-Transport-Security “max-age=63072000; includeSubDomains” always;
      配置文件,server段里添加如上代码

    • 剑心
      剑心 2023年02月11日 14:27

      @古哥我也是Nginx。hstspreload.org那边给的反馈是“The header must contain the `preload` directive.” 说标头必须包含preload

    • 古哥
      古哥钻石会员 2023年02月11日 14:48

      @剑心add_header Strict-Transport-Security “max-age=63072000; includeSubDomains; preload” always;
      试一下这样行不行吧

    • 剑心
      剑心 2023年02月11日 14:56

      @古哥这样点击保存,宝塔会直接报错

    • 剑心
      剑心 2023年02月11日 14:58

      @古哥可以了古哥,引号改成小写就正常了

  • 醉眼朦胧
    醉眼朦胧 2023年03月24日 23:57

    古哥,nginx怎么屏蔽wp-login.php和xmlrpc.php这两个文件呢?

    微信小程序
    微信公众号