asp.net mvc route 中新發現的小技巧

在發現這個小技巧以前,我常常被某些問題困擾,咱們以博客園爲例html

image

1:是分類名稱web

2:是分類url數據庫

3:點擊分類,進入的頁面,要顯示分類的名稱緩存

4:點擊分類,進入的頁面,要用分類相關參數併發

在平常web的開發中,常常遇到要在頁面上顯示一個分類,而後這個分類的連接要包含這個分類的id等參數(例如爲搜索引擎友好要包含名稱的漢語拼音),而後點擊這個分類的頁面要顯示這個分類的各類信息例如分類名稱,分類讀取搜索接口的地址和參數等。asp.net

尤爲是某些變態的分類,一個條目和一個條目讀取相關信息的方式還不同,還可能很耗時分佈式

這個時候爲了提高系統性能,常常用緩存辦法,尤爲是總體高併發站點(不是某些熱數據形成的併發,而是網站總體的併發比較大),更是頭疼高併發

咱們按照web開發無限細分來看這個問題性能

1 直接讀取數據 ==》  數據庫鏈接數被佔用網站

2 緩存到asp.net自帶的cache  ==》我常常偷懶用這個,數據庫鏈接數被佔用的次數減小但不明顯,由於緩存的時間短(緩存長了貌似沒用)

3緩存到分佈式緩存例如Memcache  ==》序列化和反序列化形成cpu上升和內網流量上升

3緩存到分佈式緩存例如Memcache+本地cache緩存等  ==》方案較爲複雜

直到最近寫route ,手抖了一下,覺得本身寫錯了熱烈的笑臉

假設 博客園的分類是這麼定義的

  public class CnblogsCate
    {
        public int id { get;set; }
        public string name { get; set; }
        public string search { get; set; }

        /*
        其餘相關的屬性
         * 
        */

        public List<CnblogsCate> getALL()
        {
            List<CnblogsCate> result = new List<CnblogsCate>();
            CnblogsCate item = new CnblogsCate();
            item.id = 1;
            item.name = "test";
            item.search = "pra=1";
            result.Add(item);
            item = new CnblogsCate();
            item.id = 2;
            item.name = "test2";
            item.search = "pra=2";
            result.Add(item);
            return result;
            //return new List<CnblogsCate>
        }

    }

註冊route

           CnblogsCate  Cate=new CnblogsCate();
           var allCate= Cate.getALL();
           foreach (CnblogsCate item in allCate)
           {
               routes.MapRoute(
         "Default_" + item.id, // 路由名稱
         "Cnblog/"+item.name+"/", // 帶有參數的 URL
         new { controller = "Cnblogs", action = "Index", Cate = item } // 這裏直接對參數賦值
     );
           }

這樣在控制器裏面就能夠直接取到想要的數據了

    public class CnblogsController : Controller
    {
        //
        // GET: /Cnblogs/

        public ActionResult Index(CnblogsCate Cate)
        {

            return View();
        }

    }
 

例如

請求:http://localhost:34197/Cnblog/test/

image

這樣就能夠和各類複雜的方案說拜拜了,即便是動態添加和刪除分類對應的rout也很簡單,和複雜方案說886

相關文章
相關標籤/搜索