使用HttpResponseMessage获取图像的最佳/最快方法是什么

本文关键字:方法 是什么 最佳 HttpResponseMessage 获取 图像 使用 | 更新日期: 2023-09-27 18:31:17

>我目前有这个方法:

  public HttpResponseMessage Get(string FileId, string VersionId)
        {
            byte[] fileContents;
            var file = DataRepository.GetSingle<FileModel>(ObjectId.Parse(FileId));
            var fileDir = file.Dir + "/"+VersionId+ file.FileExtension;
            var result = new HttpResponseMessage(HttpStatusCode.OK);
            using (MemoryStream memoryStream = new MemoryStream())
            {
                using (var image = new Bitmap(WebRequest
                    .Create(fileDir)
                    .GetResponse()
                    .GetResponseStream()))
                {
                    image.Save(memoryStream, StorageServiceHelper.GetImageFormatFromFileName(fileDir));
                    fileContents = memoryStream.ToArray();
                    var stream = new MemoryStream(fileContents);
                    result.Content = new StreamContent(stream);
                    result.Content.Headers.ContentType = new MediaTypeHeaderValue(file.MediaType);
                }
            }
            return result; 
因此,对于每个图像请求,

它都会调用此方法,但是在第一个请求上似乎非常慢(每个请求至少 1 秒 5 kb 文件)。有没有更快的方法可以做到这一点? }

使用HttpResponseMessage获取图像的最佳/最快方法是什么

看起来是一个相当复杂的方法,但我不知道你为什么这样做的细节。 无论如何,这是我返回图像的控制器:

public async Task<HttpResponseMessage> Get(HttpRequestMessage request, int id)
    {
        byte[] img = await _repo.GetImgAsync(id);//gets image from database.
        HttpResponseMessage msg = new HttpResponseMessage(HttpStatusCode.OK)
        {
            Content = new ByteArrayContent(img)
        };
        msg.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png");
        return msg;
    }

此外,如果它只是第一个请求很慢,则可能 Asp.Net 启动应用程序。 如果在 IIS 中重新启动应用程序池,则可以在实时服务器上看到相同的内容。