首页 > 其他分享 >webpage页面打开速度变慢--Session阻塞造成时的解决方案(转)

webpage页面打开速度变慢--Session阻塞造成时的解决方案(转)

时间:2022-12-15 09:12:09浏览次数:78  
标签:session 标记 webpage 阻塞 -- Session 锁定 页面

Asp.net项目因Session阻塞导致页面打开速度变慢

     前年有个Asp.net项目上线后,正常情况下大部分页面打开速度都很快,但个别页面处理速度较慢。奇怪的是一旦访问个别速度慢的页面后,在该页面还未响应完毕前再去访问任何其他页面都需要等待很久才有响应。

     经过仔细分析和查找,原来发现罪魁祸首是Session阻塞造成的。默认情况下session状态是“可写状态”(EnableSessionState=”true”),即当用户打开任何一个页面时,该页面的Session就会持有一个写锁定,写锁定会阻塞所有的读写锁定,故只有等该页面处理完毕后才释放对应的Session写锁定,在释放之前访问其他页面时将被阻塞住。详细描述如下:

      当页面对Session具有可写功能(即页面有<%@ Page EnableSessionState="True" %>标记),此时直到请求完成该页面的Session持有一个写锁定。 
      当页面对Session具有只读功能(即页面有<%@ Page EnableSessionState="ReadOnly" %>标记),此时知道请求完成该页面的Session持有一个读锁定。 
      读锁定将阻塞一个写锁定;读锁定不会阻塞读锁定;写锁定将阻塞所有的读写锁定。

 

   所以将各页面标记为<%@ Page EnableSessionState="ReadOnly" %>可解决此问题。也可在web.config中统一修改各页面的默认session状态:

   <pages validateRequest="false" enableSessionState="ReadOnly">
      <controls>
        <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      </controls>
    </pages>

  对于个别页面确实需要写session权限的(例如有session[“aa”]=”bb”之类的操作),可以单独设置该页面标记为

<%@ Page EnableSessionState="True" %>

 

标签:session,标记,webpage,阻塞,--,Session,锁定,页面
From: https://www.cnblogs.com/coolyylu/p/16984246.html

相关文章

  • 学期心得体会及寒假学习实践计划
    1、大数据技术学习-2门慕课220小时    自9月中旬-12月中旬开始学习大数据技术体系,主要是2门慕课,林子雨的《大数据技术原理与应用》,和《Spark编程基础》,其中《大数......
  • 微服务组件-----Spring Cloud Alibaba 注册中心Nacos的CP架构Raft协议分析
     前言本篇幅是继 注册中心Nacos源码分析 的下半部分。  意义【1】虽说大部分我们采用注册中心的时候考虑的都是AP架构,为什么呢?因为性能相对于CP架构来说更高......
  • 《数学之美》读后感
    看完《数学之美》之后最大的感受就是:1.数学模型巨大作用,推动着新技术的发展2.攻城师是一个伟大的职业,能够运用这些知识转化为生产力,非常牛叉3.书中提到了很多数学模型都......
  • 使用Arthas热更新线上代码
    一般线上问题比开发环境的问题更难解决,一个主要的原因便在于开发态可以任意debug断点调试,而线上环境一般不允许远程调试,所以在实践中,我一般习惯用Arthas来定位线上的问......
  • Linux基础第十一章:日志文件及如何使用rsyslog搭建小型日志服务器
    一、日志文件1、日志作用2、常用日志3、日志级别二、Rsyslog日志处理系统1、使用Rsyslog创建日志有点2、Rsyslog配置文件解析3、使用rsyslog将ssh服务的日志单独设......
  • MongoDB中执行批操作
    和大多数数据库系统类似,MongoDB也提供了api,支持在单个操作中插入或检索多个文档。通过减少客户端和MongoDB之间的交互次数,可以提高数据库的性能。使用.batchsize()优化批......
  • Codeforces Round 793 div2 (A-D)
    A题,题意是给一个回文串,问有多少个字符删掉,还是一个回文串这个题看样例,肯定是从中间开始查相同字符的段长度,没啥难度代码:#include<bits/stdc++.h>usingnamespacest......
  • 这6款混合开发框架,比原生更香吗?
          合适的平台框架往往能够给混合应用的开发,带来事半功倍的效果。本文将向你介绍目前6种最为实用的开发框架。  众所周知,根据使用场景的不同,我们往往需要......
  • 刷题笔记 | 经典算法题-阶乘计算
    题目描述给定一个正整数n,求出n!的值。输入描述输入一个正整数n,n<=1000。输出描述输出n!。输入输出样例示例输入10输出3628800python代码实现:impo......
  • Oracle表空间概念及操作
    表空间,顾名思义,就是一张表所存在的空间。一个表同时只能存在于一个表空间,不同表空间的表是相互隔离的,可以取相同的名字。 在数据库只有一个实例的情况下,如果要实现数......