Tôi đang cố gắng đặt tiêu đề bộ nhớ cache trong ASP.NET MVC Web API, nhưng phản hồi từ IIS cho thấy bộ giá trị CacheControl đang bị bỏ qua.Đầu đề Cache-Control không được gửi phản hồi mặc dù được định cấu hình trên đối tượng phản hồi
Giả thiết ban đầu của tôi là tôi đã sử dụng EnableCorsAttribute trong System.Web.Http.Cors, đây là trường hợp cần thiết trong trường hợp sử dụng này. Tuy nhiên, ngay cả khi không có thuộc tính đó, tiêu đề Cache-Control phản hồi vẫn là 'riêng tư'.
Có điều gì tôi đang làm sai ở đây không?
// GET api/<version>/content
// [EnableCors(origins: "*", headers: "*", methods: "*")]
public HttpResponseMessage Get(HttpRequestMessage request)
{
int cacheMaxAgeSeconds;
string cacheMaxAgeString = request.GetQueryString("cache-max-age") ?? request.GetQueryString("cache-max-age-seconds");
string rawUri = request.RequestUri.ToString();
try
{
cacheMaxAgeSeconds = cacheMaxAgeString == null ? Config.ApiCacheControlMaxSeconds : int.Parse(cacheMaxAgeString);
}
catch (Exception ex)
{
cacheMaxAgeSeconds = Config.ApiCacheControlMaxSeconds;
//...
}
try
{
//...
var response = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StringContent("...", Encoding.UTF8, "application/json")
};
response.Headers.CacheControl = new CacheControlHeaderValue
{
Public = true,
MaxAge = TimeSpan.FromSeconds(cacheMaxAgeSeconds)
};
return response;
}
catch (Exception apiEx)
{
//...
}
}
đáp ứng
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: application/json; charset=utf-8
Date: Thu, 23 Jul 2015 10:53:17 GMT
Server: Microsoft-IIS/7.5
Set-Cookie: ASP.NET_SessionId=knjh4pncbrhad30kjykvwxyz; path=/; HttpOnly
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Content-Length: 2367
Connection: keep-alive
là có một lý do bạn đang cố gắng để cuộn của riêng bạn ở đây qua một cái gì đó giống như https://github.com/filipw/AspNetWebApi-OutputCache? – BMac
Có, tôi thực sự muốn người gọi có thể chỉ định khoảng thời gian cache. Giá trị được đọc từ chuỗi truy vấn và nguồn cấp dữ liệu vào các giá trị tiêu đề kiểm soát bộ nhớ cache. – gb2d
hmm, nếu có ai biết câu trả lời cho câu hỏi này thì https://twitter.com/filip_woj (tác giả của gói nuget ở trên) có thể xứng đáng với anh ta trên twitter. – BMac