nginx如何在动态网页中间缓存一些块

nginx how to cache some block in the middle of the dynamic web page

我有一个主页,其中的动态内容因 authorized/unauthorized 用户而异。我需要在该页面的中间放置一个带有“10 个顶级实体”的

这个块是由 freemarker 生成的,数据是从一些 SQL 查询中获取的,这些查询对我的数据库来说很繁重,但结果的生存时间大约为 1 小时甚至更长。 所以我认为我可以生成 block 并将其缓存在 nginx 级别。

我看到两种方式:

我的问题:处理这种情况的正确方法是什么? 这种情况可能还有另一种方法吗?

这完全取决于您的设置和具体情况。

  • 如果 SSI 已经在项目中使用,那么 SSI 是可行的,否则 - 在项目中引入额外的组件并不总是一个好的解决方案,尤其是当应用程序逻辑溢出到这些组件上时。

  • 第二个请求最容易实现,在这种情况下你也可以利用浏览器缓存,这可能会有一些帮助

  • 第三个选项是将其缓存在应用程序级别(在共享 memcached/redis/etc 中)或者甚至具有物化数据库视图,以便繁重的查询变得不那么繁重。