Featured image of post WordPress 部分文章列表页面 504 的问题原因与最终解决办法

WordPress 部分文章列表页面 504 的问题原因与最终解决办法

原来和主题程序抓取文章缩略图时没有设置超时时间有关

这个问题困扰我几乎一年了。今天终于得到了解决!

淀粉月刊用的是Wordpress程序,采用Beginning主题。

有时候访问月刊的某些包含文章 list 的页面,比如 topic、page、tag 这些,会出现长时间无法加载出来的情况,最后服务器返回 504(Timeout,请求时间过长)。通常表现为第一页第二页没问题,到了第三页就有问题,第四页又没问题了。

淀粉月刊创立几个月后开始出现这种问题,我以为是部分文章的编码啊什么和主题或者什么插件不兼容,也没去仔细思考解决,就简单地把某个 list 页面的文章一个个用WP Hide Post插件在首页隐藏,找到出问题的文章,全局隐藏掉(或者写的太渣的直接扔掉)。

最近这个问题越来越频繁了,于是我不得不着手解决它。

我开始以为是Beginning主题的问题,于是就想着换别的主题。试了包括NewspaperionMag在内的好几个主题,发现再也不会 504 了。然而这些主题统统不能让我满意,最后还是没办法扔掉Beginning啊= =

我开始检查这些有问题的文章,发现它们几个共同点:

1.都有图片

2.图片用的都是图床(外部图片)

3.有的图片现在已经无法显示了(图床挂了)

然后我又看到Beginning主题设置里面有这个选项:

缩略图?cache 文件夹?外部图片?图床挂了?真相慢慢浮出水面。。。

理理思绪,出错的原因大概是这样的:

1.发布文章的时候引用了外部的图片链接

2.Beginning在 list 页面会选取文章中第一张图片作为特色图片显示在左侧,并自动进行裁剪保存到cache/beginning文件夹。如果是外部图片,则远程下载之后进行处理。(问题就出在这了)

3.海枯石烂之时 过了一段时间,有些文章中的图床挂了。

4.可是,这时候 太古时期 以前生成的缩略图还是应该存在与本地并且能够被正常读取的,为什么程序还需要重新获取图片、重新进行裁剪后缓存的操作呢?原因可能是以下两者:

①由于月刊同时安装了WP Super Cache,使用的缓存目录和Beginning一样是cache目录。而WP Super Cache的缓存是需要随时清空重建的,所以可能清除缓存时不必要地把Beginning的缩略图也给清掉了 ②Beginning本身就会把超过内定时间缩略图缓存的清除掉然后重建。

5.其实,如果Beginning在获取缩略图的时候能够设置一个超时时间,就不会导致整个页面超时了。可是它似乎没有这样做。于是因为一篇文章的缩略图无法生成,整个 list 页面 504.

由于月刊速度很慢,所以图床是必须用的,而且有时候转载文章也没办法一个个把所有图片保存到本地,但同时我又必须保证第一张图片始终可以正常加载。综合一下我加装了这个插件:

然后进行这样的设置:

(↑只将文章中的第一张外部图片保存到本地媒体库)

OK,至此问题基本上解决了。

Licensed under CC BY-NC-SA 4.0