实现标签打开/关闭功能的最佳方法

时间:2019-05-18 22:54:47

标签: javascript php mysql wordpress

我有一个WordPress列表页面,其中列出了200家商店,因此我具有PHP函数,该函数根据工作时间显示打开/关闭标签:

$status = open_close_status($restaurant_id);
<span class="restaurant-status <?php echo $status; ?>"><?php echo $status; ?></span>

问题在于,即使重新加载页面,标签也会被缓存并保持不变。实现此类功能以使PHP保持动态的最佳方法是什么?需要仅将这段代码排除在缓存之外,而页面的其余部分应该缓存。

1 个答案:

答案 0 :(得分:1)

具有动态内容的页面不应被服务器缓存,或者应该每五分钟左右由服务器更新其缓存(也许是cron作业)。听起来您有查询问题。也许懒惰地加载了超过特定点的所有餐厅,并确保您没有使用元查询。

但是,要解决您的问题,您需要使用JavaScript(特别是AJAX)动态更新状态。看看WP's AJAX Documentation,以快速了解其工作原理。

基本上,您只需要用<span class="restaurant-status" data-restaurant-id="<?php echo $restaurant_id;"></span>替换状态HTML / PHP。然后,您可以从那里获取并使用JavaScript遍历所有餐厅状态,并将ID传递到您的open_close_status函数(确保将其添加到wp_ajax_nopriv_动作钩子,修改类以及更改内部文本。

也就是说,我仍然认为您应该首先解决服务器缓存之外的页面缓慢问题。延迟加载,确保图像被压缩,不严重依赖缓慢/过大的插件等。WordPress应该能够非常快速地发出10、50、100甚至200条帖子。 (作为轶事证据,我有一个正在使用的网站,该网站在posts表中有400,000条记录,其中35,000是“公司”,而350,000是“评论”,它们彼此关联,并且可以吐出250家公司并在不到半秒钟的时间内对其进行了审核。)

相关问题