缓存深入
2011-09-13 19:55 刘永强 阅读(180) 评论(0) 收藏 举报缓存(Cache)
一:缓存简介:
如果每次进入页面的时候都查询数据库生成页面内容的话,如果访问量非常大,那么网站的性能会非常差,而如果只有第一次访问的时候才查询数据库生成页面内容,以后都直接输出内容,则能提高系统性能,这样无论有多少人访问都只访问一次数据库,数据库压力不变。缓存是一种利用空间换取时间的技术,存在于计算机中的很多地方,用来将一些慢速设备中常用数据库保存在快速设备中,取数据的时候直接从快速设备中取,比如cup二级缓存,内存,window文件读取缓存。缓存存在失效的问题:为了保证从缓存中读取数据和慢速数据(数据库)中数据一致,则需要在慢速数据(数据库)中对应的数据发生变化的时候,清除缓存中相应的数据(缓存依赖)。缓存是改进网站性能的第一个手段,就像索引是改进数据库性能的第一个手段一样。
二:缓存分类
ASP.net缓存主要分为:页面缓存(中庸)、数据源缓存(最不灵活的)、数据缓存(灵活)这三种主要类型。
(1)页面缓存:
给页面添加<% OutputCache Duration="15" VaryByParam="none"%>标签就可以启用页面缓存,这样整个页面的内容就会被缓存,页面中的asp.net代码,数据源在缓存期间都不会被运行,而是直接输出缓存的页面内容,Duration表示缓存时间,以秒作为单位,适用范围(一般只有看帖,看新闻,看视频的页面),VaryByParam是用来设置根据什么字段来设置缓存。(比方是ID,Name等等)
(2)数据源缓存:
设定ObjectDataSource的CacheDuration,EnableCaching=true.这样每隔CacheDuration指定的时间段才调用SelectMethod指定的方法来执行数据库查询,其他时候都是直接返回缓存的数据。取数据的过程缓存,在缓存期间,绑定控件向ObjectDataSource要数据, ObjectDataSource直接将缓存的数据返回给控件,不再去向TypeName指向的类要数据。
(3)缓存依赖:依赖于文件,依赖于数据库
三:Session深入-状态提供程序
进程外session:可以在IIs或者asp.net服务意外关闭时继续保持状态,注意此时存到session中的对象必须支持序列化
(1)StateServer:使用aspnet_state.exe
首先在控制面板启动ASP.NET状态服务,修改配置文件<sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424"/>,(在注册表)设置是否允许远程使用,位置:C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters,默认端口号:42424
(2)SQLServer
使用aspnet_regsql.exe运行Session数据库脚本:临时储存区:InstallSqlState.sql & UninstallSqlState.sql永久储存区:InstallPersistSqlState.sql & UninstallPersistSqlState.sql(需要使用SQLServerAgent服务-因为调度作业)注意:之后配置数据库权限麻烦的话,可以在运行完aspnet_regsql.exe后在数据库中执行你想要使用的sql脚本,就可以不配置权限了。
浙公网安备 33010602011771号