哪里解析一个大的txt文件ASP.NET

时间:2012-05-10 05:40:32

标签: c# asp.net

我想在我的网络应用程序中解析一个大的txt文件。之前,我和一种桌面应用程序有相同的应用程序,我在Load期间进行了一次解析,并将文件内容添加到内存中。

在ASP.NET网站中,我不确定是否应该在Page_Load()中执行此操作,因为解析13Mb文本文件会使用户每次都变慢。我应该怎么做才能将这一次带入内存,然后对所有用户,可以查找相同的内存中解析内容?

4 个答案:

答案 0 :(得分:4)

我会在Application_Start事件处理程序中的 global.asax 中加载它。然后将其添加到缓存中并根据需要进行检索。

要降低从缓存中删除数据的可能性,您可以指定它不可删除:

HttpContext.Current.Cache.Add(
    "mydatakey",        // key for retrieval
     MyDataObject,      
     null,              // cache dependencies
     DateTime.Now.AddDays(1),      // absolute expiration
     TimeSpan.FromDays(1),         // sliding expiration  
     System.Web.Caching.CacheItemPriority.NotRemovable,       // priority
     new CacheItemRemovedCallback(MyHandleRemovedCallback)
);

有关此缓存方法数据的更多详细信息,请参阅MSDN(缓存应用程序数据):http://msdn.microsoft.com/en-us/library/6hbbsfk6(v=vs.71).aspx

答案 1 :(得分:2)

如果您的文件对于所有用户都相同,则可以放入asp.net提供的缓存中。如果它特定于用户,则会话可能是它的一个地方,但这会获得大量内存并使其几乎具有破坏性。您可以Cache file in asp.net

这样做
string fileContent = Cache["SampleFile"] as string;
if (string.IsNullOrEmpty(fileContent))
{
    using (StreamReader sr = File.OpenText(Server.MapPath("~/SampleFile.txt")))
   {
       fileContent = sr.ReadToEnd();
       Cache.Insert("SampleFile", fileContent, new System.Web.Caching.CacheDependency(Server.MapPath("~/SampleFile.txt")));
   }
}   

答案 2 :(得分:0)

如果您必须将13 MB的文本文件加载到网站的内存中,那么我建议您使用可以在Global.asax文件中设置的应用程序变量,这将对网站中的所有用户可用。< / p>

一旦文件存在,它将一直保留,直到从内存中卸载应用程序池。

答案 3 :(得分:0)

使用Application [“key”] = value。你需要在服务器中缓存它,应用程序应该像在Session [“userid”] = something中那样在Session中保存。