如何只更新页面缓存中的特定自定义域?

时间:2021-06-24 作者:Viktor

我想使用REST API更新各个页面上的自定义字段——例如从传感器跟踪外部温度、湿度等。但是,如果网站具有缓存,则页面不会使用自定义字段中的新信息进行更新。

“我怎么能”;冲孔“;在缓存中只更新这些字段,而不重新生成页面的整个缓存?

我想到了对象缓存,但这是用于DB查询的,可能不适合用于此目的。

欢迎提出任何想法。非常感谢

编辑:到目前为止,我可以想到两种选择:

报废并重新创建整个缓存用AJAX加载自定义字段服务器端事件我不确定哪个更快。可能这取决于访问者的数量和数据更新的频率,这可能会导致大量AJAX调用,而缓存只创建一次。在您希望在网站上显示最新信息的情况下,标准方法是什么?

2 个回复
SO网友:Tom J Nowell

最接近您想要的是wp cache flush CLI命令,或wp_cache_flush() 这将刷新任何对象缓存only 刷新通过实现的持久对象缓存WP_Cache.

特别是:

这仅适用于对象缓存。如果没有持久对象缓存,则不会产生任何影响CDN caches and software such as Varnish caches can\'t be flushed this waycaching plugins won\'t support it, each plugin requires a unique solution

  • transients and other caches in the database will be unaffectedwp cache flush 刷新整个对象缓存,而不是特定的页面或post/meta,因此对于任何不是持久对象缓存的内容,您都很倒霉,需要调查您为站点选择的特定解决方案。不存在通用WordPress解决方案

  • SO网友:Mark Kaplun

    以wordpess的方式进行AJAX基本上会使您的站点没有缓存,因为加载wordpress来处理请求会带来巨大的损失,而且这可能需要花费时间,这与加载未缓存的页面类似。您将以一个进程结束,该进程首先加载缓存的页面,然后立即加载AJAX,最后加载的内容实际上比缓存的页面要长。

    如果AJAX是按需触发的,那么使用AJAX的唯一方法就是某种用户操作。如果您能够以这种方式设计您的用户体验,那么这是一种可能的解决方案。

    另一个与基于传感器的信息相关的选项是避免联系wordpress获取信息。您可能可以安排所有;“实时”;将数据作为平面文件或json文件,并将其放置在可从web访问的位置并加载(将其包装为JS,您可以将其作为脚本包含)。

    这种方法避免了连接到DB和初始化wordpress。

    我假设要读取传感器,您需要使用某种shell脚本,您可以更改并控制它对输出的操作。

    相关推荐

    如何针对多服务器环境进行缓存?Memcached、Redis或其他?

    我正在研究加速多服务器wordpress安装的方法。在过去,有像batcache这样的插件使用memcache来存储对象。该插件已经过时,希望在2018年了解Wordpress在内存中存储对象的最佳方式。我的目标是加速我们的wordpress站点,并在缓存对象(限制DB交互)时卸载服务器,如果可能的话,不使用页面缓存(内存解决方案)。