zoukankan      html  css  js  c++  java
  • asp.net MVC Session锁的问题

    一直在用Session,对Session锁并没有太多的关注,可能是平时没有注意。前段时间突然发现,一个Ajax Get请求,直接访问地址,只需要几十ms,但是在页面中加载,却需要2s。最后定位到Session的问题。

    具体的内容我在园里看了下别人的文章:http://blog.csdn.net/paolei/article/details/38052129

    不过,也发现了一些问题。

    比如,这个例子:

    后端:

        public class MyController : Controller
        {
            // GET: My
            public ActionResult Index()
            {
                return View();
            }
            [HttpGet]
            public string GetTest1()
            {            
                Thread.Sleep(1000);
                return "GetTest1";
            }
            [HttpGet]
            public string GetTest2()
            {
                return "GetTest2";
            }
        }
    

      前端:

        $.get("GetTest1", function (resp) {
            console.log(resp); // server response
        });
        $.get("GetTest2", function (resp) {
            console.log(resp); // server response
        });

    直接使用上面的代码,没有访问过Session,代码默认不进行Session锁,运行结果:

    GetTest2
    GetTest1

    当在Controller中写Session后:

            public ActionResult Index()
            {
                Session["A"] = "A";
                return View();
            }

    运行结果:

    GetTest1
    GetTest2

    然后按上文在Controller前加:[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)],再次运行,发现结果是一样的,说明ReadOnly是无效的。

    其实也是,虽然是ReadOnly,但是代码中还是写了,这和ReadOnly显然是矛盾的,但是代码并不会报错,只是这个属性无效了。

    后来,改成:[SessionState(System.Web.SessionState.SessionStateBehavior.Disabled)]

    这时再运行,就直接报错了。

    最后总结了一下,只要Controller中有Session的写,无论Controller前的SessionStateBehavior是什么,都会认为Session是可写的,会进行Session锁。 所以,如果真的对Ajax并发性能要求比较高的话,就不能用Session了吧。 所以,觉得SessionStateBehavior这个属性有点鸡肋呀。本人浅见,如果有高手希望指点一二。

    后来,我对自己的应用想到了一个不是办法的办法,把另外一个Ajax加载比较慢的,使用timeout 20ms,这个是调用一个复杂的计算加载待办数的,另一个是加载页面列表数据,显然,用户一开始最想先看到列表数据。

  • 相关阅读:
    JVM1
    JVM
    安卓权威编程指南 -笔记(19章 使用SoundPool播放音频)
    安卓权威编程指南 -笔记(18章 处理assets)
    安卓权威编程指南 挑战练习 16章
    安卓权威编程指南 -挑战练习 15章。
    安卓权威编程指南 挑战练习 13.8 用于RecyclerView的空视图
    安卓权威编程指南 挑战练习13.7-优化字符串资源显示
    关于List比较好玩的操作
    安卓权威编程指南 挑战练习13.6 14.8
  • 原文地址:https://www.cnblogs.com/wileywong/p/5518015.html
Copyright © 2011-2022 走看看