我想知道如何通过传递的参数来缓存webservice返回的数据?
例如:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string FunctionThatReturnsSomething(int param1){
... does something
return strResult;
}
我想要的是返回的webservice返回的数据将被缓存,但是根据参数值(inr param1)。因此,例如,如果webservice函数的值为'1',它将缓存该结果。如果函数为param1得到'2'整数,它将缓存另一个结果。
注意:使用POST方法通过Ajax调用调用webmethod / webservice。
答案 0 :(得分:1)
ASP.NET为这类事情提供了Application Cache。
以最简单的形式,您可以像这样添加数据到缓存:
HttpRuntime.Cache["Key"] = "Value";
因此,您可以缓存想要轻松返回的数据:
string cacheKey = "FunctionThatReturnsSomething_" + param1.ToString();
if (HttpRuntime.Cache[cacheKey] == null)
{
string myData = GetDataToReturn(param1);
HttpRuntime.Cache[cacheKey] = myData;
}
return (string)HttpRuntime.Cache[cacheKey];
它还允许您指定CacheDependancy。因此,例如,如果您的数据基于本地文件,则可以在该文件更新时自动清除缓存。
您还可以在一段时间后将您输入缓存的数据删除,例如,如果它在10分钟内未被使用,那么:
HttpRuntime.Cache.Insert(cacheKey, myData, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, 10, 0));
或者在绝对时间,例如添加后10分钟:
HttpRuntime.Cache.Insert(cacheKey, myData, null, DateTime.Now.AddMinutes(10),
System.Web.Caching.Cache.NoSlidingExpiration);