对URL地址进行编码 优化2

ASP(Active Server Page)是 Microsoft 公司推出的基于 PWS (Personal Web Server)& IIS (InternetInformation Server)平台的、基于 ISAPI (InternetServiceAPI) 原理的动态网页开发技术,目前日趋成熟完善。在这里仅就代码优化进行一些简单讨论。 

1、声明VBScript变量

在ASP中,对vbscript提供了强劲的支持,能够无缝集成vbscript的函数、方法,这样给扩展ASP的现有功能提供了很大便利。由于ASP中已经模糊了变量类型的概念,所以,在进行ASP与vbscript交互的过程中,很多程序员也惯于不声明vbscript的变量,这样加重了服务器的解析负担,进而影响服务器的响应请求速度。

鉴于此,我们可以象在VB中强制用户进行变量声明一样在vbscript中强制用户进行变量声明。实现方法是在ASP程序行首放置<% optionexplicit%>。

2、对URL地址进行编码

在我们使用asp动态生成一个带参数URL地址并进行跳转时,在IE中解析很正常,但在NetScrape浏览时却有错误如下:

HTTP Error 400

400 Bad Request

Due to malformed syntax, 

the request could not be understood by the server.

The client should not repeat the request without modifications.

解决方法是对生成的URL参数使用ASP内置server对象的URLencode方法进行URL编码,例子如下:

<%

URL="xur.asp"

var1="username=" & server.URLencode("xur")

var2="&company=" & server.URLencode("xurstudio")

var3="&phone=" & server.URLencode("021-53854336-186")

response.redirect URL & "?" & var1 & var2 & var3

%>

3、清空对象

当使用完对象后,首先使用Close方法来释放对象所占用的系统资源;然后设置对象值为“nothing”释放对象占用内存。当年,我就是在一张页面上创建了百余个没有清空对象的记录集而崩溃了我的IIS。下面的代码使用数据库内容建立一个下拉列表。代码示例如下:

<% myDSN="DSN=xur;uid=xur;pwd=xur"

mySQL="select * from authors where AU_ID<100"

set conntemp=server.createobject("adodb.connection")

conntemp.open myDSN

set rstemp=conntemp.execute(mySQL)

if rstemp.eof then

response.write "七彩空间:新人课堂教学"

response.write mySQL

conntemp.close

set conntemp=nothing

response.end

 end if%>

<%do until rstemp.eof %>

<%

rstemp.movenext

loop

rstemp.close

set rstemp=nothing

conntemp.close

set conntemp=nothing

%>

4、使用字符串建立SQL查询

使用字符串来建立查询并不能加快服务器的解析速度,相反,它还会增加服务器的解析时间。但在这里仍然推荐使用字符串代替简单的查询语句来进行查询。这样做的好处是,可以迅速发现程序问题所在,从而便利高效地生成程序。示例如下:

<%mySQL= ""select * "

mySQL= mySQL & "from publishers"

mySQL= mySQL & "where state='NY'"

response.write mySQL

set rstemp=conntemp.execute(mySQL)

rstemp.close

set rstemp=nothing

%>

5、使用case进行条件选择

在进行条件选择的时候,尽量使用case语句,避免使用if语句。使用case语句,可以使程序流程化,执行起来也比if语句来的快。示例如下:

<%

  FOR i = 1 TO 1000

   n = i

   Response.Write AddSuffix(n) & "<br>"

  NEXT

  %>

  <%

  Function AddSuffix(num)

numpart = RIGHT(num,1)

SELECT CASE numpart

CASE "1"

IF InStr(num,"11") THEN

num = num & "th"

ELSE

num = num & "st"

END IF

CASE "2"

IF InStr(num,"12") THEN

num = num & "th"

ELSE

num = num & "nd"

END IF

CASE "3"

IF InStr(num,"13") THEN

num = num & "th"

ELSE

num = num & "rd"

END IF

CASE "4"

num = num & "th"

CASE ELSE

num = num & "th"

END SELECT

AddSuffix = num

  END FUNCTION

%>

6、使用adovbs.inc文件中定义的常量打开记录集

打开记录集时,可以定义记录集打开的游标类型和锁定类型。在 adovbs.inc 文件中定义了一些常量来定义这些类型。adovbs.inc 文件保存在 \inetpub\iissamples\IISamples 目录下面。下面列举几个常用的游标类型和锁定类型。

游标类型:adOpenFowardOnly游标只能向前;adOpenKeyset 游标可向前或者向后,如一用户添加记录,新记录不会出现在记录集中;adOpenDynamic 游标动态随意;adOpenStatic记录集不对其他用户造成的记录修改有所反映。

锁定类型:adLockReadOney不能修改记录集中的记录;adLockPessimistic 在编辑一条记录时锁定它;adLockOptimstic 调用记录集Update方法时才锁定记录;adLockBatchOpeimstic记录只能成批更新。

<!--#INCLUDE VIRTUAL="/ADOVBS.INC" -->

<%

connectme="DSN=xur;uid=xur;pwd=xur"

sqltemp="select * from publishers where name='xur'"

set rstemp=Server.CreateObject("adodb.Recordset")

rstemp.open sqltemp, connectme, adOpenStatic,adLockOptimstic

response.write rstemp.recordcount & " records in<br>" & sqltemp

rstemp.close

set rstemp=nothing

%>

7、避免在使用global.asa文件中进行对象定义

由于global.asa文件中的内容可以为站点内所有文件引用,无疑,在global.asa文件中进行对象定义可以省去很多重复工作。比如在global.asa中的application_onstart函数中进行如下定义:

<%SUB application_onstart

set application("theCONN")=server.createobject("adodb.connection")

END SUB %>;

这样就可以在站点任何代码中做类似引用:

<%

mySQL="select * from publishers where state='xur'

set rstemp=application("theconn").execute(mySQL)

%>

同样地,可以在session_onstart函数中创建记录集对象

<%SUB session_onstart

set session("rstemp")=server.createobject("adodb.recordset")

END SUB %>

然后在站点也面中进行如下引用:

<%

mySQL="select * from publishers where state='xur'

set session("rstemp")=conntemp.execute(mySQL)

%>

但这样做的同时也有很大的负面影响,由于Application和session变量都只有在关闭网站的时候才释放占用的资源,所以session参数会浪费大量不必要内存,而且此时application变量成为服务器性能的瓶颈。

解决方法:建立定义对象asp页面,在需要进行调用这些对象的页面上,引入这张 asp页面。假设定义对象的asp页面名称为define.asp,则只要在对应asp页面中加入以下语句就能引入该页面。

<!--#INCLUDE VIRTUAL="/define.asp" -->

在进行页面引进时,最好在待引进的asp文件中不要包含 <%@LANGUAGE="VBSCRIPT"%>语句。因为在asp文件中,只能有一句由@来定义的脚本解析语言。

8、安全防护

asp提供了很好的代码保护机制,所有的asp代码都在服务器端执行而只返回给客户端代码执行结果。即便这样,在老版本的IIS中还可以在文件名后面家::$DATA来查看asp的源代码,这已经属于WebServer安全范畴不在本文讨论范围内。下面提出两点简单的安全注意事项。

  虽然在asp中建议引入文件以inc作为扩展名,在这里仍建议以 asp 作为引文件的扩展名。当这些代码在安全机制不好的 WebServer 上运行时,只需在地址栏上输入引入文件的地址(inc为扩展名),就可以浏览该引入文件的内容,这是由于在WebServer 上,如果没有定义好解析某类型(比如inc)的动态连接库时,该文件以源码方式显示。

  不要把数据库文件放在网站结构内部,这样,当恶意人士获取数据库路径后,就可以轻易获取该数据库,进而肆意更改数据库内容。比较好的做法是,为数据库建立 DSN(DateSource Name),而在进行数据库访问时直接访问该DSN

时间: 2024-08-02 15:59:04

对URL地址进行编码 优化2的相关文章

对URL地址进行编码 优化2_应用技巧

ASP(Active Server Page)是 Microsoft 公司推出的基于 PWS (Personal Web Server)& IIS (InternetInformation Server)平台的.基于 ISAPI (InternetServiceAPI) 原理的动态网页开发技术,目前日趋成熟完善.在这里仅就代码优化进行一些简单讨论.  1.声明VBScript变量 在ASP中,对vbscript提供了强劲的支持,能够无缝集成vbscript的函数.方法,这样给扩展ASP的现有功能

ASP编码优化

编码|优化 ASP(Active Server Page)是Microsoft公司推出的基于PWS(Personal Web Server)&IIS(InternetInformation Server)平台的.基于ISAPI(InternetServiceAPI)原理的动态网页开发技术,目前日趋成熟完善.在这里仅就代码优化进行一些简单讨论. 1. 声明VBScript变量 在ASP中,对vbscript提供了强劲的支持,能够无缝集成vbscript的函数.方法,这样给扩展ASP的现有功能提供了

Asp编码优化技巧8则(转)

编码|技巧|优化 ASP(Active Server Page)是Microsoft公司推出的基于PWS(Personal Web Server)&IIS(Internet Information Server)平台的.基于ISAPI(InternetServiceAPI)原理的动态网页开发技术,目前日趋成熟完善.在这里仅就代码优化进行一些简单讨论. 1. 声明VBScript变量 在ASP中,对vbscript提供了强劲的支持,能够无缝集成vbscript的函数.方法,这样给扩展ASP的现有功

Asp编码优化技巧8则

编码|技巧|优化 ASP(Active Server Page)是Microsoft公司推出的基于PWS(Personal Web Server)&IIS(Internet Information Server)平台的.基于ISAPI(InternetServiceAPI)原理的动态网页开发技术,目前日趋成熟完善.在这里仅就代码优化进行一些简单讨论. 1.声明VBScript变量 在ASP中,对vbscript提供了强劲的支持,能够无缝集成vbscript的函数.方法,这样给扩展ASP的现有功能

Asp编码优化技巧_应用技巧

8条Asp编码优化技巧: 1.声明VBScript变量      在ASP中,对vbscript提供了强劲的支持,能够无缝集成vbscript的函数.方法,这样给扩展ASP的现有功能提供了很大便利.由于ASP中已经模糊了变量类型的概念,所以,在进行ASP与vbscript交互的过程中,很多程序员也惯于不声明vbscript的变量,这样加重了服务器的解析负担,进而影响服务器的响应请求速度. 鉴于此,我们可以象在VB中强制用户进行变量声明一样在vbscript中强制用户进行变量声明.实现方法是在AS

ASP编码优化技巧8则_ASP基础

1.声明VBScript变量 在ASP中,对VBScript提供了强劲的支持,能够无缝集成VBScript的函数.方法,这样给扩展ASP的现有功能提供了很大便利.由于ASP中已经模糊了变量类型的概念,所以,在进行ASP与VBScript交互的过程中,很多程序员也惯于不声明VBScript的变量,这样加重了服务器的解析负担,进而影响服务器的响应请求速度.鉴于此,我们可以象在VB中强制用户进行变量声明一样在VBScript中强制用户进行变量声明.实现方法是:在ASP程序行首放置<% option e

Asp编码优化技巧八则

ASP(Active Server Page)是Microsoft公司推出的基于PWS(Personal Web Server)&IIS(Internet Information Server)平台的.基于ISAPI(InternetServiceAPI)原理的动态网页开发技术,目前日趋成熟完善.在这里仅就代码优化进行一些简单讨论. 1.声明VBScript变量 在ASP中,对vbscript提供了强劲的支持,能够无缝集成vbscript的函数.方法,这样给扩展ASP的现有功能提供了很大便利.由

URL地址中所暴露出来的网站特点

我喜欢浏览网页时多个心眼.这个心眼需要观察许多元素,每个元素都能提供信息.孤立的一个元素不重要,但是多个元素组成的信息,往往能获得有价值的判断.那么从这些元素说起: 永远不 忽略URL URL是一个重要的信息,职业敏感让分析师绝对不会忽略URL地址的特点.URL反映出网站的蛛丝马迹,直接以例子说话: $URL地址所在的域名 很多人在网上被骗,很大原因就是从来不关注URL所在的域名. 比如:http://www.taobao.ipx32.com/about.html,看似弱智的骗术却让很多 网友

以不同的观点分析在URL地址设计中常遇到的2个问题

我们知道影响站点的收录排名因素有很多,诸如内容的质量.网站的速度,站点的结构.URL地址的结构等等.很多细节都会对站点日后的优化产生影响,因此我们在站点设计的时候总是会从多方面进行思考.遇到这些问题的时候,我们往往会从各种渠道获得相关的解决方法.但是这些前辈所给我们的建议是否就一定是适合我们的站点呢?笔者认为不然,有的问题还是要有自己的想法,切勿过度的盲从.下面笔者将从不同的观点分析我们在站点url结构设计中容易遇到的2个问题. 疑问一:我们的URL地址是否需要统一? 这个问题我想大多数的SEO