ASP 快速执行网页(2)
来源:asp之家 发布时间:2020-07-07 11:14:17
Session状态
无庸置疑地,在Asp中能够通过Session维持某个状态的能力是十分强大的特色。然而,它会影响你的*能。明显地,你的站点的可伸缩**变成了另一个问题,如果限制Session的使用的话。然而,session会为每个用户消耗服务器资源。
如果你不使用session 变量,或事实上你不必使用?使用隐藏表单域,在数据库中保存数据,查询字符串是不是其中的窍门?所以你应该禁止Session状态。你可以使用下面的声明禁止使用session:
@EnableSessionState = False
这样,ASP将不再检查session信息。
如果你不得不依赖于session状态,应该避免在session对象中存放大量的数据。IIS中的session在客户端的HTTP cookie可用的时候就会保持,导致被session占用的内存在session 终止或超时前一直被占用。这样,如果很多用户同时使用你的程序的时候,你的服务器资源可能会耗尽。
数据库访问
数据库访问是必须的麻烦?访问数据库将会激烈地减慢你的程序,但很显然,如果没有数据库,很多站点将变得毫无价值可言。但通过存储过程访问数据库来代替使用嵌入式Sql 语句,你可以提升潜在的*能。通过使用存储过程和ActiveX Data Objects (ADO),它们亦同样拥有良好的灵活*。尽可能从存储过程来输出数据。
确认你的数据库具有索引,因为这样能直接提高你的程序的效率。同样,尽量在你的数据库服务器运行更新统计(Update Statistics) 以帮助追踪你的数据分发,这样,你的数据库就能够基于这些信息来改造查询执行。注意一些数据库比如MS Access,是不是真正能在企业级程序中接受?SQL Sever 7.0或者Oracle是一个更好的赌注。
让SQL象它被设计的那样工作,它能count(统计),连接(join),排序(sort)和group 数据。当你能够写出一个查询语句来做这些东西的时候,就不要自己用其它语言来实现。
下面是一个统计所有列的最简单的语法:
SELECT count(*) FROM publishers WHERE state='NY'
如果你统计一个指定的列,你必须使用group by语句来分组该列,否则它不会工作:
SELECT count(city),city FROM publishers GROUP BY city
分类返回的数据:
SELECT * FROM TableName WHERE FieldName>50 OR FieldName<100 ORDER BY FieldName2, Field Name3
使用Odbc还是文件DSN连接数据库?使用快速的OLEDB Provider技术连接你的数据库而不是使用DSN连接。不再需要恳求你的ISP(或数据库**员/网管)为你建立一个系统DSN,当你移走Web文件的时候,亦不需要改变配置。
OLEDB 介于ODBC层和应用程序之间。在你的ASP 页面中,ADO介于ODEDB之上的“应用程序”。你的ADO调用首先被送到OLEDB,接着被送到ODBC层。然而,你可以直接连接到OLEDB 层,并且如果你这样做的话,你就能看到服务器端*能的提高。然而,怎样直接连接到OLEDB?
如果你使用SQLServer 7,使用下面的连接代码连接数据库:
strConnString = "DSN='';DRIVER={SQL SERVER};" & _
"UID=myuid;PWD=mypwd;" & _
"DATABASE=MyDb;SERVER=MyServer;"
最重要的参数是DRIVER=部分。如果你要绕过ODBC而使用通过使用OLEDB 连接SQL Server(这是更快的连接),请使用下面的语法:
strConnString ="Provider=SQLOLEDB.1;Password=mypassword;" & _
"Persist Security Info=True;User ID=myuid;" & _
"Initial Catalog=mydbname;" & _
"Data Source=myserver;Connect Timeout=15"
有什么不对的地方吗?
现在你可能会觉得有点奇怪:我们在这个新的连接方法中的要点是什么呢?为什么不使用标准DSN-less/System DSN途径?呵,根据Wrox 在他的著作《ADO 2.0 Programmer's Reference》中测试的结果表明,如果你使用OLEDB连接和DSN或者DSN-less连接方法比较,你会发现有下面的改进:
*能对比:
SQL Access
OLEDBDSNOLEDBDSN
连接时间:18?82?连接时间:62?99
查询1,000条记录时间:29005400查询1,000条记录时间: 100950
注释:这个结果在Wrox的《ADO 2.0 Programmer's Reference》一书的第232和233页可以查到。时间的单位是毫秒,查询1,000记录时间是通过服务器端游标计算出来的(当使用客户端游标的时候,OLEDB与DSN记录集的*能之间的差别不大)。


猜你喜欢
- mysql.sock到底存储了什么东西?mysql.sock作为mysql的套接字一般用于本地连接数据库,在速度上优于TCP/IP连接。一般
- 首先这里声明一下,关于我测试浏览器的版本是chrome15.0.874.121 Firefox 8.01 IE9 IETester下面的代码
- 程序需求:输入用户名,密码认证成功显示欢迎信息输入错误三次后锁定用户流程图:好像画的不咋地查看代码:#!/usr/bin/env pytho
- 一. torch.squeeze()函数解析1. 官网链接torch.squeeze(),如下图所示:2. torch.squeeze()函
- 主要原理:调整dicom的窗宽,使之各个像素点上的灰度值缩放至[0,255]范围内。使用到的python库:SimpleITK下面是一个将d
- 新建图像文件后选Channels面板,新建Alpha1通道:输入文字; &nbs
- 简介困扰在 Python 中使用并发编程来提高效率对于数据科学家来说并不罕见。在后台观察各种子进程或并发线程以保持我的计算或 IO 绑定任务
- 在使用JavaScriptSerializer.Serialize 方法转json对象时,遇到一个问题,后台方法生成的json字符串中有没有
- 来由:最近的工作一直是学校设计教程的开发,都是自己根据理论知识加一些实际工作经验相结合写的教程,所以不会咬文嚼字,文笔也不一定非常专业和流畅
- 看到网上有一篇文章,是介绍如何做网站测试的.从一开始的链接测试,页面内容测试,到浏览器兼容性测试,负载压力测试,一直到最后的安全性测试,甚至
- 今天用要django传值给模板, 然后需要用js处理一下.特此记录.用json.dumps()方法将值传给模板.import json re
- 你已经在上面取出w打头记录的例子中看到了LIKE的用法。LIKE判定词是一个非常有用的符号。不过,在很多情况下用了它可能会带给你太多的数据,
- 前言:有些时候,为了设定手机铃声或者发抖音视频,我们会耗费大量时间在剪辑音乐高潮部分上。那么这个音乐高潮的提取能不能自动化呢?当然可以。先来
- 项目我采用了三层结构,我把LINQ的映射文件放到了DAL这个层中,映射文件自动由VS2008生成,在原来的机器上一直正常,一点问题都没有,当
- RSA加密是一种非对称加密,通常使用公钥加密,私钥解密,私钥签名,公钥验签。在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解
- 本人最近在当当网上购买了一本关于用户体验的书,在此把最实在的内容整理下发给大家分享下。第一步:表现层视觉设计,也就是我们说的网页设计师做的工
- 在Python中,正则表达式的group和groups方法是非常有用的函数,用于处理匹配结果的分组信息。group方法是re.MatchOb
- 本文实例讲述了python实现根据月份和日期得到星座的方法。分享给大家供大家参考。具体实现方法如下:#计算星座def Zodiac(mont
- 如何在生产上部署Django?Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式。uwsgi介绍uW
- 问题:一台服务器的PHP程序通过localhost地址无法连接数据库,但是如果设置为127.0.0.1则可以正常连接,连接其他数据库服务器也