这个问题困扰我几乎一年了。今天终于得到了解决!
淀粉月刊用的是Wordpress
程序,采用Beginning
主题。
有时候访问月刊的某些包含文章 list 的页面,比如 topic、page、tag 这些,会出现长时间无法加载出来的情况,最后服务器返回 504(Timeout,请求时间过长)。通常表现为第一页第二页没问题,到了第三页就有问题,第四页又没问题了。
淀粉月刊创立几个月后开始出现这种问题,我以为是部分文章的编码啊什么和主题或者什么插件不兼容,也没去仔细思考解决,就简单地把某个 list 页面的文章一个个用WP Hide Post
插件在首页隐藏,找到出问题的文章,全局隐藏掉(或者写的太渣的直接扔掉)。
最近这个问题越来越频繁了,于是我不得不着手解决它。
我开始以为是Beginning
主题的问题,于是就想着换别的主题。试了包括Newspaper
、ionMag
在内的好几个主题,发现再也不会 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,至此问题基本上解决了。