这是我的控制器......
public ActionResult RequestImage(string url, int width, int height)
{
Stream stream = fileService.Request(url, width, height);
return new FileStreamResult(stream, "image/jpg");
}
文件服务......
public Stream Request(string url, int width, int height)
{
var request = new S3StorageRequest(url, null, null);
var stream = s3Service.Request(request);
var outputStream = new MemoryStream();
var settings = $"maxwidth={width}";
if (height > 0)
{
settings = string.Concat(settings, $"&maxheight={height}");
}
imageResizer.Build(stream, outputStream, settings);
stream.Dispose();
outputStream.Position = 0;
return outputStream;
}
S3请求...
public Stream Request(S3StorageRequest s3Request)
{
GetObjectRequest request = new GetObjectRequest { BucketName = bucketName };
request.Key = s3Request.Path;
GetObjectResponse response = S3Client.GetObject(request);
return response.ResponseStream;
}
当我在本地运行它(它仍在通过互联网从S3下载)时,S3请求大约需要130毫秒(低至78毫秒)。
图像大小调整大约需要50ms。
以下是根据浏览器的请求...
在实时服务器上,这就是浏览器所说的......
它是一个t2.micro实例,我的Windows实例是通过Parallels在2.4Gz i5上运行的。任何想法它为2s做了什么? TTFB可以降至854毫秒左右。
没有图像大小调整和下载,大约450ms。因此调整图像大小或文件响应似乎很慢。