6

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

 3 years ago
source link: https://blog.skyju.cc/post/wordpress-partly-504/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
技术

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

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

Aug 28, 2017   By  居正

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

淀粉月刊用的是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,至此问题基本上解决了。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK