我有一个主页,其动态内容因授权/未授权用户而异。我需要在该页面的中间放置一个块和“10个顶级实体”。
此块由freemarker生成,并且数据被提取一些对我的数据库来说很重的SQL查询,但结果的生存时间大约是1小时甚至更长。 所以我认为我可以生成阻止并将其缓存在 nginx 级别。
我看到两种方式:
使用 nginx ssi 模块,这可能有助于包含阻止和缓存
设置 onload javascript函数,该函数将再次向HTTP服务器提取阻止
我的问题:处理这种情况的正确方法是什么? 这种情况可能还有另一种方式吗?
答案 0 :(得分:0)
这完全取决于您的设置和具体情况。
如果已经在项目中使用过,SSI是可行的,如果没有 - 将额外的组件引入项目并不总是一个好的解决方案,尤其是当应用程序逻辑溢出到这些组件上时。
第二个请求最容易实现,在这种情况下,您还可以利用浏览器缓存,这可能会有所帮助
第三个选项是将其缓存在应用程序级别(在共享的memcached / redis / etc中),或者甚至具有物化的数据库视图,以便繁重的查询变得不那么重。