发信人: bjadai()
整理人: dongbao(2002-04-19 16:53:38), 站内信件
|
仅对于每秒访问数百页面和同时有上千个并发。
缓存记录集
在正常情况下,你可以将ADO记录集本身缓存在Application或Session范围,但必 须满足两个条件: .ADO必须被标记为自由线程模型(Free-threaded) .和必须 使用无连接记录集如果不能满足上面两个条件,千万不要缓存记录集。当ADO组件 被标记为自由线程模型时,ADO记录集对象可以安全地存储。可以用Makfre15.ba t,一般是放在\\Program Files\Common\System\ADO这个文件夹里,将ADO组件标 记为自由线程模型。
缓存大数组
缓存大数组不是一个好方法。在访问数组中的任何元素之前,脚本解释器都需要 生成一个临时的副本。如果你缓存了一个100,000个字符串元素的数组,在访问数 组中任何一个字符串之前,ASP解释器首先必须复制所有的100,000个数据到一个 临时数组中。在这种情况下,开发一个组件来储存数据或是使用词典(Dictioar y)对象更为合适一点。不过,也不要因小失大,数组对象的的查找速度会更快一 点。索引一个词典比索引一个数组慢。可以因情况而宜,选择合适的数据结构。
不要缓存数据库连接
缓存ADO Connection非常不好。如果Connection对象被存储在Session对象中,就 要为每个用户创建一个数据库连接,这就消减了IIS内建的数据库连接池的作用, 并且增大了Web服务器和数据库服务器的压力。
所以,(1)能缓存的就缓存,能在内存中内存的不要在硬盘上内存;而他是一个 典型的以空间换取时间的交易,装满过期数据的缓冲区会浪费内存。所以必须缓 冲那些常用和计算复杂的数据,和不经常变化的数据,比如,下拉列表框、引用 表、小段DHTML代码,XML字符串、菜单项和站点配置变量(包括数据源名字(DS N),IP地址和Web路径)都是很好的对象。(2)注意,可以缓存数据本身,还可 以缓存数据的表现。如果一个ASP页面很少变化,并且缓存代价比较高(比如,产 品列表),可以考虑用静态HTML页面。(3)对于数据库连接,还是不用Seesion 对象的好,可以缓存连接字符串;但在global.asa中可以缓存其他对象与变量( 4) 对于对于没有实现负载均衡的条件下,可以缓存无连接ADO记录集;(5)对 于其他ADO对象必须缓存的,可以调用Makfre15.bat,将ADO组件标记为自由线程 模型;(6)其他COM对象最好不缓存。
-- ※ 来源:.月光程序代码网 http://www.moon-soft.com.[FROM: 210.74.189.50]
|
|