首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.Net MVC自定义路由处理器与MemCached

ASP.Net MVC自定义路由处理器与MemCached
EN

Stack Overflow用户
提问于 2015-09-23 13:26:13
回答 1查看 64关注 0票数 0

我有一个用ASP.NET MVC编写的CMS。我编写了一个自定义路由处理程序,它查看传入路径并确定路由位置(即自定义重定向、类别页、产品页等)。当前路由存储在memcached服务器上的缓存中。在我们得到服务器上的高负载之前,一切都很好。然后,我要么从缓存中检索错误,要么有时得到404错误。同时,运行一个花费5-10秒的报表会导致整个服务器挂起。

  1. 我应该首先使用自定义路由处理程序吗?
  2. 这不都是异步完成的吗? 公共requestContext.HttpContext.Request.Path.ToLower().RemoveOutsideSlashes();IHttpHandler GetHttpHandler(RequestContext requestContext) { var _lock =新对象();MvcHandler处理程序= null;var path =IHttpHandler var qs = requestContext.HttpContext.Request.QueryString;List items;lock (_lock) { var cache =新CacheManager();items = cache.Routes;} if (!hasPermanentRedirect(path,qs,items,ref requestContext)) { //检查类别第一处理程序= checkForCategory(path,items,ref requestContext);// check for product (处理程序== null) = checkForProduct(path,items,ref requestContext);// check for webpage if (处理程序== null) = checkForWebPage(path,items,ref requestContext);} if (处理程序!=空)返回处理程序;返回新的MvcHandler(requestContext);}
EN

回答 1

Stack Overflow用户

发布于 2015-09-23 13:45:37

以下是我要做的事:

  • 我会运行分析器,看看花在哪里的时间最多。这将帮助您理解代码中的瓶颈在哪里。
  • 我会将您的CacheManager类作为静态类来处理,这样您就不会为每个请求实例化新的CacheManager。
  • 我将使checkForCategory、checkForProduct和checkForWebPage方法异步,这样您的代码就不会保存请求线程,因此您可以处理更多的请求
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32740886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档