UrlRewriting on Global.asax和SQL输出缓存

时间:2009-02-01 12:11:39

标签: c# asp.net sql caching url-rewriting

我正在为我的主要类别页面执行UrlRewrite。 转换:

www.mysite.com/Category.aspx?id=2 

www.mysite.com/Dogs

为了做到这一点,我正在使用Global.asax的{​​{1}}执行以下代码(伪代码):

Application_BeginRequest

我的问题是:

  1. 这是执行Url重写的正确方法吗? (这是我第一次这样做。)
  2. 此代码几乎每次请求都会从DB读取,有没有办法缓存它? 我在SQL缓存中找到的唯一技术需要protected void Application_BeginRequest(Object sender, EventArgs e) { if (IsCategoryUrl()) { string CategoryName = ParseCategoryNameFromUrl(Request.Url); string CategoryId = GetCategoryIdByNameFromDB( CategoryName ); Context.RewritePath("/Category.aspx?id=" + CategoryId); } } 指令,这在<%@ Page %>上是不可能的。还有其他解决办法吗?
  3. 提前致谢。

1 个答案:

答案 0 :(得分:2)

缓存数据库查询没有任何问题。对于每个类别名称,您可以将ID存储在字典中,作为在一段时间后过期的示例。在这种情况下,这将删除DB调用。举个例子:

Dictionary<string, int> categoryIdLookup;

这可以存储在HTTP缓存中并检索,如果它是null(即它从未被添加或已经从缓存中删除)构建字典,查找正确的Id然后进行重写。