我有一个web api 2项目,客户端将请求一些xml格式的数据。这个XML永远不会改变,我想知道如何将它保存在ram中,以便每次需要来自该文件的数据时它都不会反序列化xml。
在启动时将其反序列化然后将其保存在静态变量中是最佳方式,因为它只能用于阅读吗?
[HttpPost]
[Route("api/dosomething")]
public string DoSomething() {
var myData = XmlSerializer(MyDataStruct).Deserialize(something);
return myDate;
}
此处xml仅用于向客户端传递值。我怎样才能使它能够反序列化一次然后直接返回它。使用静态成员会启用此功能吗?
答案 0 :(得分:1)
使用静态字段的简单缓存方法可能是一个公平的选择:
private static MyDataStruct _myData;
[HttpPost]
[Route("api/dosomething")]
public string DoSomething() {
if(_myData == null)
{
_myData = new XmlSerializer(typeof(MyDataStruct)).Deserialize(something);
}
return _myData;
}
如果你想要更好的性能并完全跳过XML的反序列化和响应体序列化为JSON / XML,那么我强烈建议你使用像这样的库的HTTP输出缓存方法:{{ 3}}