首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >动态响应的NodeJS缓存

动态响应的NodeJS缓存
EN

Stack Overflow用户
提问于 2015-08-13 19:44:48
回答 1查看 288关注 0票数 3

我面临的设计问题是,我希望减少API服务器的延迟,因为它根据传递的参数对请求的文件进行一些繁重的处理。

此服务器需要向许多http客户端提供处理过的文件。请注意,这些动态内容是原始文件名和其他参数的结果。在任何时间点,对于许多http客户端,原始文件名和其他参数都可能完全匹配。因此,为了节省冗余,这个处理必须精确地完成一次。

我目前正在使用基于Redis的分布式锁来实现这一点。

  • ,有什么更好的方法来避免这种拖延呢?

现在,为了降低带宽成本,我处理这些文件并将它们上传到CDN。并最终将经过处理的最终-URL重定向请求传递给所有感兴趣的各方,即http客户端。

  • ,我怎样才能使这个完全非阻塞?

基于一些阅读,我发现nsq.io可以通过为每个文件和params的唯一组合创建动态主题来解决这个问题。但是http客户端将如何以非阻塞的方式使用结果。请注意,我对HTTP客户端没有任何控制,也就是说,我不能更改客户端的任何内容来解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2015-08-24 05:26:25

我不知道你是怎么用锁的。

我会这么做,

代码语言:javascript
运行
复制
1. check redis for (file, params) (see if already processed)
  1.1 if not check redis for (processing - file, params) (see if processing)
    1.1.1 if so, wait for (file, params)
    1.1.2 if not, put (processing -file, params) and start making the (file, params) result 

(因为这是非原子的,您可以在“时间”窗口中多次处理,但可能比常量锁定/解锁更好,我认为重要的想法是,您希望为每个资源实现“锁”概念,以便对不同请求的请求不必获得锁。)

代码语言:javascript
运行
复制
  1.2 if so, serve the contents

阻塞/非阻塞是您在服务器端应用的内容,客户端与此无关。

使您的服务器套接字(操作)非阻塞。

如何做到这一点取决于您为服务器使用的框架/库。

现在我看到您在使用node.js,node.js不是已经使用非阻塞套接字了吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31997099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档