C# 使HttpRequest缓存工作
我想强制HttpRequest响应在没有任何条件的情况下被绝对缓存。但有时它似乎不起作用。也许它会看页眉,但我不想看。例如,有时不缓存。下面是一个代码:C# 使HttpRequest缓存工作,c#,caching,httprequest,C#,Caching,Httprequest,我想强制HttpRequest响应在没有任何条件的情况下被绝对缓存。但有时它似乎不起作用。也许它会看页眉,但我不想看。例如,有时不缓存。下面是一个代码: public static class HttpRequestHelper { public const string ContentTypeForm = "application/x-www-form-urlencoded"; public static HttpWebRequest CreateRequest(Uri ur
public static class HttpRequestHelper
{
public const string ContentTypeForm = "application/x-www-form-urlencoded";
public static HttpWebRequest CreateRequest(Uri uri)
{
HttpWebRequest request = WebRequest.CreateHttp(uri);
request.Proxy = null;
return request;
}
public enum CacheMode
{
None = 0,
Hourly,
Max,
}
public static string Request(Uri uri, CacheMode cache = CacheMode.None)
{
HttpWebRequest request = CreateRequest(uri);
if (cache != CacheMode.None)
request.CachePolicy = new HttpRequestCachePolicy(HttpCacheAgeControl.MaxStale,
cache == CacheMode.Hourly ? TimeSpan.FromHours(1) : TimeSpan.FromDays(365));
return GetContent(request);
}
public static HttpWebResponse GetResponse(HttpWebRequest request)
{
Contract.Requires(request != null);
Debug.WriteLine("Request: " + request.RequestUri);
var response = request.GetResponse() as HttpWebResponse;
return response;
}
public static string GetContent(WebRequest request)
{
Contract.Requires(request != null);
string data = "";
using (var response = (HttpWebResponse)request.GetResponse())
{
Stream responseStream = response.GetResponseStream();
if (responseStream == null) return data;
using (var reader = new StreamReader(responseStream))
{
data = reader.ReadToEnd();
}
}
return data;
}
}
最可能的原因是服务器的响应指定了某种类型的“不缓存”头。也就是说,它可能是
Pragma:no cache
-因此,尽管您做出了努力,但不会缓存该项
可能的解决方法是将结果自己缓存在内存或磁盘上…另一个url示例您能提供一些现成的解决方案吗?我不想实现所有这些东西-缓存数据库文件和操作,管理内存中要保存的内容等等。实现了它。没有那么难。