Entity framework WebApi支持范围请求,无需多次查询数据库

Entity framework WebApi支持范围请求,无需多次查询数据库,entity-framework,asp.net-web-api,.net-core,Entity Framework,Asp.net Web Api,.net Core,目前,我有一个dotnetcore WebApi提供视频。视频以varbinary(MAX)的形式存储在SQL server表中。这是工作,但我读到,为了支持IOS safari,我们需要接受范围标题,所以我增加了对这一点的支持(我认为) 但是现在我注意到两件事(可能是无关的): 1) 每当调用此API时,CPU都会限制为100%。我只能假设EntityFramework正在查询数据库中的25MB文件。看起来很疯狂,但是API没有做其他事情?当服务器刚开始运行时,这是否可以得到改进 2) 向AP

目前,我有一个dotnetcore WebApi提供视频。视频以varbinary(MAX)的形式存储在SQL server表中。这是工作,但我读到,为了支持IOS safari,我们需要接受范围标题,所以我增加了对这一点的支持(我认为)

但是现在我注意到两件事(可能是无关的):

1) 每当调用此API时,CPU都会限制为100%。我只能假设EntityFramework正在查询数据库中的25MB文件。看起来很疯狂,但是API没有做其他事情?当服务器刚开始运行时,这是否可以得到改进

2) 向API发出多个请求,请求的字节范围不同。然而,我的api反过来会在每个请求上查询数据库,因此会在很长一段时间内将CPU发送到overdrive


在查询大型对象时,有没有更好的方法处理范围请求?

如果你问我,EF不太适合这种情况,它太笨重而且占用资源。您可以使用类似子字符串的东西编写自己的T-SQL。话虽如此,从实际的角度来看,取决于这些文件的数量和大小,以及您有多少用户,我不会选择这样的解决方案

我认为SQL数据库根本不应该成为存储数据的方式。 你可以开始研究netflix是如何做到这一点的:


你可能想要这样的东西,CDN系统,某种缓存。您现在使用的方法可能在您构建它时起作用,只有一两个用户,但是如果这是一个被很多人使用的API,您很快就会发现它无法扩展

如果内容是一段时间内不会更改的视频,请尝试使用缓存或内存数据库。