使用node.js控制对静态内容的访问
因此,我正在node.js中编写一个web应用程序,用户可以上传照片,并且可以在每张照片上指定一些访问控制设置(仅限公共、私人和朋友) 然后,我在每个请求上检查用户的会话密钥,以确保他们具有访问权限。如果他们这样做了,我将通过使用fs打开文件并将其管道传输到响应对象来向他们发送文件 然而,当我使用apachebench对此进行基准测试时,每秒会收到大约1500个请求。如果我删除所有的数据库内容,它不会更快。相比之下,Nginx每秒为同一张照片提供17000个请求 显然,如果我的服务起飞,这个数量级的差异将是一个巨大的成本问题 除了公开访问之外,还有没有更好的方法来控制访问,同时保持静态性能 编辑:实际上,文件将托管在S3上,而不是文件系统中。因此,node将更少地充当静态文件服务器,而更多地充当http代理,我认为它在这方面会做得更好。使用S3。签名URL是私人文件的临时URL,可以发送给引用S3对象的单个用户 您还可以在已签名的URL上设置过期时间,这样它就不会永远存在 因此,流程如下所示:使用node.js控制对静态内容的访问,node.js,nginx,Node.js,Nginx,因此,我正在node.js中编写一个web应用程序,用户可以上传照片,并且可以在每张照片上指定一些访问控制设置(仅限公共、私人和朋友) 然后,我在每个请求上检查用户的会话密钥,以确保他们具有访问权限。如果他们这样做了,我将通过使用fs打开文件并将其管道传输到响应对象来向他们发送文件 然而,当我使用apachebench对此进行基准测试时,每秒会收到大约1500个请求。如果我删除所有的数据库内容,它不会更快。相比之下,Nginx每秒为同一张照片提供17000个请求 显然,如果我的服务起飞,这个数量
这里有一篇相关的博文:。谢谢。我将针对将请求代理到s3(从而避免重定向延迟,我怀疑这是不可接受的)来评估此选项。欢迎其他选择!