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

发现罪魁祸首是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" %>

时间: 2024-08-04 10:18:50

Asp.net项目因Session阻塞导致页面打开速度变慢的相关文章

网站打开慢怎么回事,哪些原因导致网站打开速度很慢

网站打开速度非常慢相信是很多人都会遇到的问题,除了本身网速慢的原因之外,更多的应该是从网站本身方面考虑,有时一些细节性的问题都会导致网站打开慢,一般原因会有以下几个方面: 第一,网站服务器空间的问题.网站都是存放在服务器空间里了,如果服务器响应比较慢,那么网站同样的就会打开很慢,因此站长们在选择空间时,应该选择那些有实力的空间服务商,选择双线或多线的主机,最好选择国内的空间: 第二,网站代码问题,例如使用table布局的就会比使用div布局的网站打开慢,另外还有就是一些Javascript和一引

提升网站页面打开速度的12个建议

我们知道用户都喜欢浏览速度快的网站,不喜欢花费太多的时间等待网页的打开,等待的时间过长,会让用户失去耐心,甚至烦躁时会直接关闭网页,这样就会失去一些潜在的客户了. 其次,从SEO的角度来说,关键字的排名与网页的打开速度也有关系,Google的Web搜索团队曾在官方博客上宣布,将把网站的速度作为PR(PageRank)算法的一个因子,在所有因素都相等的情况下,速度快的网站将排在速度慢的网站前面.同时指出很多网站都没有利用最佳的页面优化技术,页面加载速度都存在很大缺陷.那么,我们该如何补救并提高网站

js代码会导致网站打开速度慢

网页要实现强大的功能,必须使用js文件,正是这些js文件,在增强网站功能的同时,也影响了网站的打开速度,总体来说,关于js优化通常有以下三种方法. 将不重要的js放在页面底部. IIS7网站监控 可以获取严重占用加载时间的JS或者图片.css等html所用文件 这是非常简单也是效果很好的优化办法,将不重要的js全部放到页面的底部,实现异步加载,也就是等网页都加载完了,再加载这些不重要的js,这样就不影响网页的速度了. 合并js文件 合并js的目的是减少http的请求,向服务器请求越少,打开速度越

升级到Sharepoint 2013后页面打开速度慢

这个问题现在有了一些新的发现. 首先,我找到了重现客户那里出现的那个复杂SQL语句的方法.这个现象其实是这样的: 当WebApplication的“List View Threshold” 数量大于 文档库中文件个数的时候,如果是非管理员的用户打开文档库,就会出现那样的SQL语句. 当“List View Threshold”数量小于文档库中文件个数的时候,如果是非管理员的用户打开文档库,会得到一个警告说文档库无法打开.而如果是管理员,就可以打开,而且SharePoint会使用另一个比较适合大数

工作中的问题解决 -- (win2003 asp.net) Session和带页面回传的方法无法正常使用解决方案

公司BP&IT项目组.从上上个月成立开始开发BP&IT软件.这个月开始测试我悲剧的发现他尽然不支持我电脑上的IE11.半个多月还没解决 我们先来分析下原因首页 登陆页面正常浏览 http://hr.bingjun.cc/ 登陆后网址呈现 http://hr.bingjun.cc/(F(0-MEj-fnv8v-hWRGI2rOhfQ_0SZjQAnMEBs5P1DKcEhwdX-TTu8TAZ_H6HVGorBM-TaTm4zK_DCSdO8gvqOXWCoou4YJIVziHJ1PC9hk

php session阻塞页面分析及优化 (session_write_close session_commit使用)

php 开发时一个启用了session_start()页面,由于执行时间过长,导致如果一个用户在访问,另一个用户启用session_start()的时候处于阻塞状态. 直到第一个用户完毕 ,第二个才能启用.开始读取.这就是session阻塞. session 默认以文件保存,当一个用户访问session_start页面后.这个时候,就会默认创建一个包含 session_id文件名,并且这个时候.会对文件进行锁定.如果这个用户点击链接.又访问一个该站的session文件,由于 第一个页面没有执行完

Visual Studio 2013新建ASP.NET项目使用Empty模板,在页面中使用验证控件出错的解决方案

Visual Studio 2013新建ASP.NET项目使用Empty模板,在页面中使用验证控件,运行页面,会出现如下的错误: 错误原因 VisualStudio 2012(或2013) WebForm 4.5 开发中,很多控件默认Enable了 Unobtrusive ValidationMode(所谓Unobtrusive Validation,就是一种隐式的验证方式)的属性(和jquery的引用相关),但并未对其进行赋值, Programmer必须手动对其进行设置.比如,在进行数据验证时

ASP.NET中的Session怎么正确使用

Session对象用于存储从一个用户开始访问某个特定的aspx的页面起,到用户离开为止,特定的用户会话所需要的信息.用户在应用程序的页面切换时,Session对象的变量不会被清除. 对 于一个Web应用程序而言,所有用户访问到的Application对象的内容是完全一样的:而不同用户会话访问到的Session对象的内容则各不相 同. Session可以保存变量,该变量只能供一个用户使用,也就是说,每一个网页浏览者都有自己的Session对象变量,即Session对象具有唯一 性. 什么是Sess

asp.net 项目优化

在我们软件开发过程中,项目的优化是必不可少的部分,那么具体要怎么优化呢?今天小编就来把我的个人经验跟大家分享一下,如果有不对的地方或者说得不好的地方,还希望大家不吝赐教. 项目的优化主要分为三个部分的优化:1.程序的优化 ,程序的优化又包括(1).算法的优化  (2).页面的优化 2.IIS的优化 3.配置文件 4.数据库的优化,数据库的优化又包括(1)数据结构的优化(2)sql语句的优化 我们首先来说程序的优化: 一.程序优化 1.使用值类型的ToString方法 在连接字符串时,经常使用"+