对Cache的疑问

in Develop

Blog的首页用的是一个Repeater
DataSource来自一个类的某个方法,返回的是一个DataTable
default页面没有做任何的Cache
直接将Repeater绑定到该DataTable然后进行显示
但这样一来在处理一些特殊日志时不大方便,如“隐藏日志”

于是创建一个List泛类型,遍历该DataTable,依次创建一个Document的实体,Add至List中,进行Cache

string _cachekey = "dv_" + _pagesize.ToString();
if (Cache[_cachekey] == null)
{

List<Blog.Model.documents.documents> list = new List<Blog.Model.documents.documents>();
if (dv.Rows.Count > 0)
{
for (int i = 0; i < dv.Rows.Count; i++)
{
Blog.Model.documents.documents doc = new Blog.Model.documents.documents();
doc.author = dv.Rows[i]["author"].ToString();
doc.CateGoryID = (int)dv.Rows[i]["CateGoryID"];
doc.CategoryName = dv.Rows[i]["CategoryName"].ToString();
doc.commont = "";
doc.content = dv.Rows[i]["content"].ToString();
doc.documentid = (int)dv.Rows[i]["documentid"];
doc.DocumentType = "";
doc.editor = "";
doc.EnableComment = (bool)dv.Rows[i]["enablecomment"];
doc.FilePath = "";
doc.guid = "";
doc.hit = (int)dv.Rows[i]["hit"];
doc.Iscommend = (bool)dv.Rows[i]["Iscommend"];
doc.IsTop = (bool)dv.Rows[i]["istop"];
doc.keyword = "";
doc.PublishDate = (DateTime)dv.Rows[i]["PublishDate"];
doc.source = "";
doc.subject = dv.Rows[i]["subject"].ToString();
doc.Tags = global.getTagsByDocumentid(doc.documentid);
doc.url = "";
doc.IsPublish = (bool)dv.Rows[i]["ispublish"];
if (doc.IsPublish == false)
{
doc.subject = "隐藏日志或草稿";
doc.content = "隐藏日志或草稿,暂时无法查看!";
}
list.Add(doc);
}
}
Cache.Insert(_cachekey, list, null, DateTime.Now.AddMinutes(5), TimeSpan.Zero, System.Web.Caching.CacheItemPriority.Default, null);
}

_rep_body.DataSource = (List< Blog.Model.documents.documents>)Cache[_cachekey];
_rep_body.DataBind();

但实际运行效率却不如做Cache之前的效率
这个问题发生在哪里?
是对List的操作上吗?

0 Comments

Leave a Reply

Using Gravatars in the comments - get your own and be recognized!

XHTML: These are some of the tags you can use: <a href=""> <b> <blockquote> <code> <em> <i> <strike> <strong>