WordPress有定时任务机制,WP Super Cache插件就是通过这个定时任务来进行预缓存,在我使用的过程中预缓存一次最多生成十几个页面,并且在下一次定时任务运行的时候才会继续生成,效率是非常的慢,如果一直挂着WP Super Cache预缓存页面可以一直自动生成,但是效率还是太慢了,于是我写了一个简单的python脚本并且可以把WP Super Cache不能预缓存的分类页面也能缓存上。

WordPress搭配WP Super Cache + Python脚本实现暴力预缓存 全站静态化 第6张插图

首先我们的服务器需要python3环境,并且我们的WordPress安装好了WP Super Cache插件,把下面的代码编辑成page.py,用于缓存分类的分页。

把代码中的链接替换成你的分类页就可以了,每一行的分类页后面数字就是你的分页数量。

比如我的分类有10页,那么我可以设置15页,后续文章多了分页多了不会缓存不上。

在把下面的代码添加到url.py:

把地图地址替换成你的地图地址,会自动抓取网站的全部链接进行预缓存。

如果我们在宝塔添加定时任务选择shell脚本:

python3 /你的目录/page.py
python3 /你的目录/url.py

可能会出现一个报错:

Traceback (most recent call last):
  File "/4apage.swap.py", line 2, in <module>
    import requests
ModuleNotFoundError: No module named 'requests'

这是因为宝塔的定时任务是使用宝塔的python环境,没有安装requests模块,我们只需要随便添加一个shell定时任务脚本:

pip3 install requests

执行一下,然后再重新添加定时任务就可以了。

注意:

如果你的域名有cdn或者防火墙,频繁的预缓存可能会出现被拦截的情况,请把IP加入白名单 并且把修改host文件,把域名指向源IP或者127.0.0.1,这样就不会消耗cdn流量。