是否可以恢复过期的暂态文件?

时间:2017-11-06 作者:learning_13

我的插件中几乎没有临时选项,到期时间为45分钟。之后,他们点击一个API来获得响应。现在,在某些情况下,服务器会引发异常或限制用户,以防每秒的请求受到限制。现在,在这种情况下,我仍然希望呈现响应,目前我认为唯一的方法是以某种方式恢复过期的瞬态,以防来自服务器的节流异常。有没有想过恢复过期瞬态的方法或其他更好的方法?

2 个回复
SO网友:B. Schuiling

如果要对此进行编码,最好的方法可能不是对显示的值使用瞬态,而是使用一个已更新的常规自定义字段。

在这种情况下,会出现瞬态,这将超时并触发请求。您得到的结果由您的代码检查,然后存储在其他地方。

您可以使用该字段始终在前面显示它。每当临时请求完成时,您都会更新该字段。

SO网友:scytale

根据站点设置,瞬态可能存储在内存缓存中,避免了DB查找的需要。因此,最好继续使用它们,但也将最后一个良好的API响应存储在其他地方,以便回退。

我会使用Wordpress Options API (get\\u选项和update\\u选项)执行此操作,只需在下面使用瞬态函数的地方添加相关代码。请注意Transients are also created by WP using Option functions.

设置transient时,还将执行update\\u选项(如果id不存在,也将创建该选项)。update_option(\'my_fallback_data\', $my_good_api_response);

当瞬态过期且API响应节流时,则:

$fallback_data = get_option(\'my_fallback_data\'); // NB. if option doesn\'t currently exist $fallback_data === false

如果此回退有一个可接受的最大年龄,那么您可以在1中创建一个额外的“选项”。用于存储时间,例如。

    update_option(\'my_fallback_data_expiry\', time() + 86400); // now + 1 day
然后根据上面2中的当前时间检查“my\\u fallback\\u data\\u expiry”

结束

相关推荐

Cache Get_posts

我有一个查询(见下文),它提供了一个由10个新闻项组成的列表,这些新闻项按元值“event\\u date”排序,并经过筛选,以便只显示比今天更早的帖子。处理此查询需要两秒钟,因此我正在寻找一种简单的方法来缓存结果,以加快加载时间。我已经使用了WPEngine,所以我不需要任何缓存插件。提前感谢您的帮助。<?php $today = time();?> <?php $args = array( \'numberposts\' => 10, \'orderb