为WCF服务缓存图像

本文关键字:图像 缓存 服务 WCF | 更新日期: 2023-09-27 17:55:02

我目前正在使用WCF web服务返回基于id的图像:

[WebGet(UriTemplate = "Images/{ID}/{size}.jpg")]
Stream GetImage (string ID, string size)
{
    ... Logic to determine image to return ...
}

如果给定的ID在DB中不存在,那么我返回一个占位符图像。这个占位符图像总是相同的。

是否有办法通知客户端图像是相同的,并缓存它,即使用来访问它的url是不同的?有可能有30个或更多这样的占位符图像,所以加载相同的图像30次真的没有意义。

编辑:

下面的答案非常有效。我的代码是这样的:

{
    WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.Redirect;
    WebOperationContext.Current.OutgoingResponse.Location = "//myImageLoc/defaultImg.jpg";
    fileStream = null;
}

这适用于img标签和iOS中的AFNetworking+UIKit图像。

为WCF服务缓存图像

您可以将占位符图像放置在不会更改的url上。

当你得到一个请求,结果是占位符图像,你不返回图像,你返回一个http重定向到占位符图像的位置。

由于占位符在静态url上,客户端知道它是否有图像。