当没有可用的数据库连接时,我如何恢复显示缓存页面?

时间:2013-03-19 作者:Ed Marty

我对超级缓存的工作原理知之甚少,但我至少可以在wp-content/cache/supercache文件夹中找到我网站的大部分页面。现在,如果WordPress由于MySQL服务器关闭而无法连接到数据库(就像现在的情况一样),它应该显示错误消息还是显示缓存的页面?

我认为无论是否可以建立连接,它都应该工作。是否有我缺少的选项或标志?

此外,看起来该站点的主页没有被缓存,而其他所有内容都被缓存了。有什么办法解决这个问题吗?显然我现在不能做任何事情,因为数据库已经关闭了,但为了将来?

2 个回复
SO网友:Pat J

这是对你第二个问题的回答——“而且,看起来网站的主页没有被缓存,而其他所有内容都被缓存了。有什么方法可以解决这个问题吗?”

在后端,转到Settings -> WP Super Cache 并选择Advanced 选项卡。查找标题为Accepted Filenames & Rejected URIs. 如果Front Page (is_front_page)Home (is_home) ,取消选中,然后单击Save 按钮这应该允许缓存站点的首页/主页。

注意:这假设您使用的是WP Super Cache插件,我从问题的标签中收集到您是。

(不过我还没有测试过,所以您的里程数可能会有所不同。)

SO网友:Jared Steffen

鉴于您已经有了一个缓存版本的站点,我可以跳过解释如何设置它的部分,并跳到更简单的东西——PHP的东西!

您要插入mysql_ping() 在页眉的倾斜顶部运行。当前主题(最好是子主题)中的php文件。应该是这样的:

<?php set_time_limit(0);

$conn = mysql_connect(\'localhost\', \'mysqluser\', \'mypass\');
$db   = mysql_select_db(\'mydb\');

/* Assuming this query will take a long time */
$result = mysql_query($sql);
if (!$result) {
    echo \'Query #1 failed, exiting.\';
    exit;
}

/* If nothing still, take the user to the cache */
if (!mysql_ping($conn)) {
    header( \'Location: http://www.yoursite.com/new_page.html\' )};
} ?>
因为header 函数在其中,您要确保它出现在任何其他内容之前,包括<html><body> 标签

结束