使用asp.net mvc标记数据库 - 控制器与模型问题

时间:2009-09-06 11:08:20

标签: asp.net-mvc caching tags

我在此网站上使用 Toxi解决方案来标记书签:

http://www.pui.ch/phred/archives/2005/04/tags-database-schemas.html

在控制器中,我有一个LinkController类

class LinkController

ActionResult AddNewLink(FormCollection collection_)
ActionResult Index()

在Models中,我有一个LinkRepository:

class LinkRepository

void AddLink(string url, string description, string[] tags)
WebLink[] GetLinks(string[] tags)
WebLink[] GetLinks()

我还有一个Tag Repository类:

class TagRepository

string[] GetTags()

我的问题是,当我想添加新链接时,我需要更新Tag表,我希望它能够进行优化。要做到这一点,我需要在某个地方缓存标签我不会在数据库中浪费时间尝试添加已存在的标签。我是否通过以下方式缓存这些标签:

一个。让LIinkRepository引用Tag Repository并在实例化时进行缓存 B.让LinkController缓存它(这感觉很奇怪,因为它会将标签转换为一小组不存在的标签)
C.其他选择?

1 个答案:

答案 0 :(得分:2)

首先在没有缓存的情况下工作,直到您知道以正确的方式编辑数据等。根据应用程序的使用情况,甚至可能不需要缓存......

如果事实证明您的应用程序执行得不够好,请从存储库中缓存开始。这是数据库调用将是最大的性能杀手,你不应该超过存储库来缓存(是的,我刚刚发明了那个词)那些。如果仍然遇到性能问题,请在控制器上缓存。