“讨厌胡思乱想”通过精心收集,向本站投稿了10篇windows server 安全技术详解,下面是小编为大家推荐的windows server 安全技术详解,欢迎阅读,希望大家能够喜欢。
- 目录
篇1:windows server 2008安全技术详解
如果一个进程必须运行,而不管用户是否登录,那么该进程就以服务的形式加载,
第一章:主体、用户以及角色
系统安全,大多数情况下就是主体和对象之间的关系。安全主体是所有具有安全标识符SID并且能够访问资源的账户持有者(用户、组和计算机)。
用户:本地用户(在安全账户管理器SAM数据库中创建。一般DC没有本地用户,有也只有在目录恢复模式下使用)和域用户。windows 2000起跟之前最大的变动就是活动目录。
SID:大写字母S+修订级别(一般是1)+颁发机构(0不可知、1所有用户、2登陆用户、3创建或所有者、5操作系统本身)+第一个子颁发机构(目前最多4个,5登陆的会话、6服务、21不唯一、32内置、80服务)+其余子颁发机构+相对标识符(表示用户或计算机),
如:S-1-5-21-153416595923-165138082-500(该域的SID都是以S-1-5-21-153416595923-165138082开头,再加相对标识符表示用户)。
服务的SID以S-1-5-80开头,以基于服务名的子颁发机构序号结尾。这意味这该服务的SID在所有电脑上都一样。
如查找服务“FOO”的SID,可使用sc showsid命令:sc showsid foo。
内置安全标识符在所有电脑上都一样,内置相对标识符:500管理员501来宾502服务账户512域管理员513域用户514域来宾515域计算机516域控制器544内置管理员545内置用户546内置来宾。
篇2:端口扫描技术详解
一:TCP/IP相关问题 连接端及标记 IP地址和端口被称作套接字,它代表一个TCP连接的一个连接端,
端口扫描技术详解
,
为了获得TCP 服务 ,必须在发送机的一个端口上和接收机的一个端口上建立连接。TCP连接用两个连接端来区别,也就是(连接端1,连接端2)。连接端互相发送 数据 包
篇3:详解硬盘技术
影响硬盘性能的几个参数
前一段时间有IBM带来的硬盘价格大战确实给用户不少好处,目前硬盘的容量象发馒头一样膨胀起来,接口技术也由以前的ATA/33发展到ATA/66,而这一切发展并没有在价格上表现出来,对用户来说确实是好处多多,但是目前硬盘品种繁多,参数更是时时都在变化,要普通用户了解每一个硬盘的性能和每一个参数的含义确实难处不少,但是当您需要装机时,了解您所买的硬盘性能,不被奸商以次充好,了解一些确定硬盘性能的参数含义还是很重要的。
硬盘的性能参数主要有以下几个:单牒容量、内部传输率、外部传输率、转速、数据缓存。
单牒容量:
单位面积的容量越大,至少有两个好处,一就是提供容量的前提下,成本保持低水平。比如20G的硬盘单牒容量为2G,那么需要十张盘片和20个磁头,但如果单牒容量提高一倍,则盘片数和磁头数都加少一半,无疑大大减少了成本,并且活动部件的减少也降低了故障出现的几率。
另外还有一个很重要的好处在于性能的提高。目前的硬盘大多为3.5英寸,单牒容量的提高意味着硬盘存储密度的提高,硬盘的数据存取方式都是通过盘片的旋转和磁头的移动来完成,转速一定的情况下,密度的提高意味单位时间内能读取得数据也就提高(实际也不完全对,后面会详细介绍),
由于硬盘内部结构不可能有大的变化的情况下,性能不可能有质的飞跃,单牒容量确可以有较大的增加,因此一个新的硬盘推出时,单牒容量就成为厂商不能不提的一个参数。
传输率:
硬盘的传输率分为两部分,内部传输率和外部传输率。内部传输率是磁头读出的数据传输到缓存的速度,一般比较高,可到200mb/s左右。另一个是外部传输率,也就是硬盘接口到主板控制芯片的传输率,比如UDMA66就是指外部传输率为66MB/S。这两个传输率对硬盘的实际传输速度的影响并不是其提升幅度所表现出来的那么高,很大一部分好处都在于降低了硬盘工作时的CPU占用率。对硬盘实际传输率影响最大的应该是磁头的读取速度,磁头读取速度可有下面公式计算:
速度=磁道的线密度X3.14X该磁道直径X硬盘主轴主轴转速/60
数据缓存:
硬盘的数据被磁头读取后先存到缓存中,因此如果缓存容量低于磁头一次连续读取数据的大小,必然会造成磁头重复读取同一磁道才能完成一次数据读取,因此缓存的容量大小很重要,不过缓存到了256K后,容量对速度的影响就不大了,考虑到操作系统的多工操作方式,高容量的缓存还是有利的。
单牒容量与性能的关系:
从上面的公式可以看出,对磁头读取数据速度影响最大的应该是磁道的线密度,因此不能单说盘片存储密度对性能的影响。因为相比之下磁道之间的距离比扇区间的距离大,所以提高道间密度比提高线密度容易,这是一些硬盘单牒容量增加了但性能增加不明显的原因。
篇4:灵活更安全 虚拟局域网技术详解
虚拟局域网(VLAN),是英文Virtual Local Area Network的缩写,是指网络中的站点不拘泥于所处的物理位置,而可以根据需要灵活地加入不同的逻辑子网中的一种网络技术,
基于交换式以太网的虚拟局域网在交换式以太网中,利用VLAN技术,可以将由交换机连接成的物理网络划分成多个逻辑子网。也就是说,一个虚拟局域网中的站点所发送的广播数据包将仅转发至属于同一VLAN的站点。
在交换式以太网中,各站点可以分别属于不同的虚拟局域网。构成虚拟局域网的站点不拘泥于所处的物理位置,它们既可以挂接在同一个交换机中,也可以挂接在不同的交换机中。虚拟局域网技术使得网络的拓扑结构变得非常灵活,例如位于不同楼层的用户或者不同部门的用户可以根据需要加入不同的虚拟局域网。
划分虚拟局域网主要出于三种考虑:
第一是基于网络性能的考虑。对于大型网络,现在常用的Windows NetBEUI是广播协议,当网络规模很大时,网上的广播信息会很多,会使网络性能恶化,甚至形成广播风暴,引起网络堵塞。那怎么办呢?可以通过划分很多虚拟局域网而减少整个网络范围内广播包的传输,因为广播信息是不会跨过VLAN的,可以把广播限制在各个虚拟网的范围内,用术语讲就是缩小了广播域,提高了网络的传输效率,从而提高网络性能。
第二是基于安全性的考虑。因为各虚拟网之间不能直接进行通讯,而必须通过路由器转发,为高级的安全控制提供了可能,增强了网络的安全性。在大规模的网络,比如说大的集团公司,有财务部、采购部和客户部等,它们之间的数据是保密的,相互之间只能提供接口数据,其它数据是保密的。我们可以通过划分虚拟局域网对不同部门进行隔离。
第三是基于组织结构上考虑。同一部门的人员分散在不同的物理地点,比如集团公司的财务部在各子公司均有分部,但都属于财务部管理,虽然这些数据都是要保密的,但需统一结算时,就可以跨地域(也就是跨交换机)将其设在同一虚拟局域网之中,实现数据安全和共享。采用虚拟局域网有如下优势:抑制网络上的广播风暴;增加网络的安全性;集中化的管理控制。
基于交换式的以太网要实现虚拟局域网主要有三种途径:基于端口的虚拟局域网、基于MAC地址(网卡的硬件地址)的虚拟局域网和基于IP地址的虚拟局域网。
(1)基于端口的虚拟局域网
基于端口的虚拟局域网是最实用的虚拟局域网,它保持了最普通常用的虚拟局域网成员定义方法,配置也相当直观简单,就局域网中的站点具有相同的网络地址,不同的虚拟局域网之间进行通信需要通过路由器。采用这种方式的虚拟局域网其不足之处是灵活性不好。例如,当一个网络站点从一个端口移动到另外一个新的端口时,如果新端口与旧端口不属于同一个虚拟局域网,则用户必须对该站点重新进行网络地址配置,否则,该站点将无法进行网络通信。在基于端口的虚拟局域网中,每个交换端口可以属于一个或多个虚拟局域网组,比较适用于连接服务器。
(2) 基于MAC地址的虚拟局域网
在基于MAC地址的虚拟局域网中,交换机对站点的MAC地址和交换机端口进行跟踪,在新站点入网时根据需要将其划归至某一个虚拟局域网,而无论该站点在网络中怎样移动,由于其MAC地址保持不变,因此用户不需要进行网络地址的重新配置。这种虚拟局域网技术的不足之处是在站点入网时,需要对交换机进行比较复杂的手工配置,以确定该站点属于哪一个虚拟局域网。
(3)基于IP地址的虚拟局域网
在基于IP地址的虚拟局域网中,新站点在入网时无需进行太多配置,交换机则根据各站点网络地址自动将其划分成不同的虚拟局域网。在三种虚拟局域网的实现技术中,基于IP地址的虚拟局域网智能化程度最高,实现起来也最复杂。
(4).根据IP组播划分VLAN
IP 组播实际上也是一种VLAN的定义,即认为一个组播组就是一个VLAN,这种划分的方法将VLAN扩大到了广域网,因此这种方法具有更大的灵活性,而且也很容易通过路由器进行扩展,当然这种方法不适合局域网,主要是效率不高。
(5).基于规则的VLAN
也称为基于策略的VLAN。这是最灵活的VLAN划分方法,具有自动配置的能力,能够把相关的用户连成一体,在逻辑划分上称为“关系网络”。网络管理员只需在网管软件中确定划分VLAN的规则(或属性),那么当一个站点加入网络中时,将会被“感知”,并被自己地包含进正确的VLAN中。同时,对站点的移动和改变也可自动识别和跟踪。
采用这种方法,整个网络可以非常方便地通过路由器扩展网络规模。有的产品还支持一个端口上的主机分别属于不同的VLAN,这在交换机与共享式Hub共存的环境中显得尤为重要。自动配置VLAN时,交换机中软件自动检查进入交换机端口的广播信息的IP源地址,然后软件自动将这个端口分配给一个由IP子网映射成的VLAN。
以上划分VLAN的方式中,基于端口的VLAN端口方式建立在物理层上;MAC方式建立在数据链路层上;网络层和IP广播方式建立在第三层上,
使用VLAN优点
使用VLAN具有以下优点:
1、控制广播风暴
一个VLAN就是一个逻辑广播域,通过对VLAN的创建,隔离了广播,缩小了广播范围,可以控制广播风暴的产生。
2、提高网络整体安全性
通过路由访问列表和MAC地址分配等VLAN划分原则,可以控制用户访问权限和逻辑网段大小,将不同用户群划分在不同VLAN,从而提高交换式网络的整体性能和安全性。
3、网络管理简单、直观
对于交换式以太网,如果对某些用户重新进行网段分配,需要网络管理员对网络系统的物理结构重新进行调整,甚至需要追加网络设备,增大网络管理的工作量。而对于采用VLAN技术的网络来说,一个VLAN可以根据部门职能、对象组或者应用将不同地理位置的网络用户划分为一个逻辑网段。在不改动网络物理连接的情况下可以任意地将工作站在工作组或子网之间移动。利用虚拟网络技术,大大减轻了网络管理和维护工作的负担,降低了网络维护费用。在一个交换网络中,VLAN提供了网段和机构的弹性组合机制。
三层交换技术
传统的路由器在网络中有路由转发、防火墙、隔离广播等作用,而在一个划分了VLAN以后的网络中,逻辑上划分的不同网段之间通信仍然要通过路由器转发。由于在局域网上,不同VLAN之间的通信数据量是很大的,这样,如果路由器要对每一个数据包都路由一次,随着网络上数据量的不断增大,路由器将不堪重负,路由器将成为整个网络运行的瓶颈。
在这种情况下,出现了第三层交换技术,它是将路由技术与交换技术合二为一的技术。三层交换机在对第一个数据流进行路由后,会产生一个MAC地址与IP地址的映射表,当同样的数据流再次通过时,将根据此表直接从二层通过而不是再次路由,从而消除了路由器进行路由选择而造成网络的延迟,提高了数据包转发的效率,消除了路由器可能产生的网络瓶颈问题。可见,三层交换机集路由与交换于一身,在交换机内部实现了路由,提高了网络的整体性能。
在以三层交换机为核心的千兆网络中,为保证不同职能部门管理的方便性和安全性以及整个网络运行的稳定性,可采用VLAN技术进行虚拟网络划分。VLAN子网隔离了广播风暴,对一些重要部门实施了安全保护;且当某一部门物理位置发生变化时,只需对交换机进行设置,就可以实现网络的重组,非常方便、快捷,同时节约了成本。
交换机充当的角色
交换机的好处在于其可以隔离冲突域,每个端口就是一个冲突域,因此在一个端口单独接计算机的时候,该计算机是不会与其它计算机产生冲突的,也就是带宽是独享的,交换机能做到这一点关键在于其内部的总线带宽是足够大的,可以满足所有端口的全双工状态下的带宽需求,并且通过类似电话交换机的机制保护不同的数据包能够到达目的地,可以把HUB和交换机比喻成单排街道与高速公路。
IP广播是属于OSI的第三层,是基于TCP/IP协议的,其产生和原理这里就不多讲了,大家可以看看TCP/IP协议方面的书籍。交换机是无法隔离广播的,就像HUB无法隔离冲突域一样,因为其是工作在OSI第二层的,无法分析IP包,但我们可以使用路由器来隔离广播域,路由器的每个端口可以看成是一个广播域,一个端口的广播无法传到另外一个端口(特殊设置除外),因此在规模较大,机器较多的情况下我们可以使用路由器来隔离广播。
下面开始归入正题。
通常,只有通过划分子网才可以隔离广播,但是VLAN的出现打破了这个定律,用二层的东西解决三层的问题很是奇怪,但是的确做到了。VLAN中文叫做虚拟局域网,它的作用就是将物理上互连的网络在逻辑上划分为多个互不相干的网络,这些网络之间是无法通讯的,就好像互相之间没有连接一样,因此广播也就隔离开了。
VLAN的实现原理非常简单,通过交换机的控制,某一VLAN成员发出的数据包交换机只发个同一VLAN的其它成员,而不会发给该VLAN成员以外的计算机。
使用VLAN的目的不仅仅是隔离广播,还有安全和管理等方面的应用,例如将重要部门与其它部门通过VLAN隔离,即使同在一个网络也可以保证他们不能互相通讯,确保重要部门的数据安全;也可以按照不同的部门、人员,位置划分VLAN,分别赋给不同的权限来进行管理。
VLAN的划分有很多种,我们可以按照IP地址来划分,按照端口来划分、按照MAC地址划分或者按照协议来划分,常用的划分方法是将端口和IP地址结合来划分VLAN,某几个端口为一个VLAN,并为该VLAN配置IP地址,那么该VLAN中的计算机就以这个地址为网关,其它VLAN则不能与该VLAN处于同一子网。
如果两台交换机都有同一VLAN的计算机,怎么办呢,我们可以通过VLAN Trunk来解决。
如果交换机1的VLAN1中的机器要访问交换机2的VLAN1中的机器,我们可以把两台交换机的级联端口设置为Trunk端口,这样,当交换机把数据包从级联口发出去的时候,会在数据包中做一个标记(TAG),以使其它交换机识别该数据包属于哪一个VLAN,这样,其它交换机收到这样一个数据包后,只会将该数据包转发到标记中指定的VLAN,从而完成了跨越交换机的VLAN内部数据传输。VLAN Trunk目前有两种标准,ISL和802.1q,前者是Cisco专有技术,后者则是IEEE的国际标准,除了Cisco两者都支持外,其它厂商都只支持后者。
篇5:Windows脚本技术详解
【目录】 1,前言 2,回顾WSH对象 3,WMI服务 4,脚本也有GUI 5,反查杀 6,来做个后门 7,结语 8,参考资料 【前言】 本文讲述一些Windows脚本编程的知识和技巧,
Windows脚本技术详解
,
这里的Windows脚本是指Windows Script. Host(WSH Windows脚本宿主),而不是HTML或ASP中的脚本
篇6:Intel EM64T技术详解
Intel官方是给EM64T这样定义的:EM64T全称Extended Memory 64 Technology,即64位内存扩展技术,它是Intel IA-32架构(Intel Architectur-32 extension)的一个扩展,且兼容原来的架构,通过增加CPU的运算位宽扩展增加CPU和内存之间的位宽,从而让系统支持更大容量的内存 (32bit处理器最多只能支持内存容量只有4GB,而64bit的最高则达64GB)。
寻址空间对应表
处理器
虚拟内存寻址
物理内存寻址
物理内存容量
Prescott(P4,普通PC处理器)
Nocona(Xeon,服务器处理器)
48 bit
36 bit
为 了实现64bit和32bit两种运算间的兼容,Intel在原来32bit处理器核心的基础上加入了8个64 bit GPRs(通用寄存器)和内存指针(memory pointers),从而实现了64 bit内存寻址。在理论上,虽然EM64T架构最高可以支持64 bit内存寻址,但由于设计和制造工艺等方面的因素,并非所有EM64T的处理器都能达到理论的上限,所以,在64 bit和32bit内存寻址之间提供一个48 bit的虚拟内存寻址,以增强两者间的兼容性。
EM64T模式的运行及识别
既然,EM64T是一种兼容性很强的64 bit扩展技术,那么它是如何工作的呢?
Intel为支持EM64T技术的处理器可分为两大类:传统IA-32模式和IA-32e 扩展模式,两大类下具体又可分为多种运行模式,具体如下表:在支持EM64T技术的处理器内有一个称之为扩展功能激活寄存器(Extended Feature Enable Register,IA32_EFER)的部件,其中一个被称作长模式有效(Long Mode Active,LMA)的Bit10控制器控制EM64T是否被激活。当LMA=0时,处理器便作为一颗标准的32 bit(IA32)处理器运行在传统IA-32模式;当LMA=1时,EM64T便被激活,处理器会运行在IA-32e扩展模式下。
EM64T的运行模式
传统IA-32模式
IA-32e扩展模式
保护模式
真实地址模式
真实8086模式
兼容模式
64位模式
在IA- 32e扩展模式下的兼容模式和64位模式,两者都需要64bit操作系统和64bit驱动程序的支持,但后者才是真正的64bit计算。在64bit模式 下,必须要有64bit的操作系统、驱动程序和应用程序三者合作。此时,处理器内的新增的8个GPRs和8个SSE寄存器(XMM8 -XMM15)才会被激活,原有的8个GPRS(RAX, RBX, RCX, RDX, RSI, RDI, RBP, RSP)的宽度也会同时扩展为64bit,并且启用64bit指令指针。此时,处理器才能利用64bit指令操作来支持64bit内存寻址,进行双精度 (64bit)整数运算。
而在另一种兼容模式下,计算机允许在64bit操作系统下不需要预编译就可以运行大多数传统16bit或32bit应用程序,这和传统IA-32模式下基本相同,只不过此时的操作系统和驱动程序都是64bit的,
从上面的描述我们可以看出,在不同模式的转换中,处理最大的变化便是寄存器的改变。这正是因为64bit与32bit定义的最大不同就是在寄存器上。我们可以从下表看出寄存器的具体变化情况。
64位模式
64兼容模式
名称
数量
容量bits
名称
数量
容量bits
通用寄存器(GPRs)
RAX,BX,
RCX,RDX,
RBP,RSI,
RDI,RSP,
R8-15
16
64
EAX, EBX, ECX,
EDX, EBP, ESI,
EDI, ESP
8
32
指令指针
RIP
1
64
EIP
1
32
浮点寄存器
ST0-7
8
80
ST0-7
8
80
多媒体寄存器
MM0-7
8
64
MM0-7
8
64
SSE寄存器
XMM0-15
16
128
XMM0-7
8
128
栈宽度
无
64
无
16或32
在上表中,我们可以清楚地看到处理器的寄存器在不同模式下的变化情况。虽然支持EM64T的Prescott核心拥有16个GPRs(通用寄存器),但他们并非任何时候都会工作的,Intel根据不同的运行模式定义了他们的工作状态。
支持EM64T的处理器型号
EM64T技术最早是被应用在采用了Nocona核心的Xeon处理器上,尽管 Prescott核心支持EM64T技术,但直到最近的 Prescott 2M核心,EM64T才开始被激活。这样,支持此技术的处理器便有Xeon、Pentium 4 Extreme Edition、Pentium 4 600和酷睿系列等。酷睿之后的Intel处理器也将一直支持EM64T技术。
注:我们常说的64位指的是AMD公司出的64位CPU,而EM64T则是intel按照 自己的意思理解出来的64位,也就是和amd的64位对应的另外一种叫法。实际上EM64T是在32位基础上扩展来的,应该是一种伪64,是过渡期的一种 解决方案。说白了提到64位指的是AMD的64位CPU,而EM64T则指的是INTEL公司的CPU。
篇7:跨站入侵技术详解
总体介绍
简单介绍什么是XSS攻击
如何寻找XSS漏洞
对于XSS攻击的总体思路
来自内部的攻击:
如何寻找内部的XSS漏洞
如何构造攻击
如何利用
结何实例攻击,如DVBBS&BBSXP
来自外部的攻击
如何构造XSS攻击
如何欺骗管理员打开
XSS与其它技术的结何
与mssql injection的结合
QQ跨站的结何
国内大型统计网站的跨站漏洞
社会工程学
正文:
XSS总体介绍
什么是XSS攻击
XSS又叫CSS (Cross Site Script) ,跨站脚本攻击,
跨站入侵技术详解
,
它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常呼略其危害性。而本文主要讲的是利用XSS得到目标服务器的shell。技术虽然是老技术,但是其思路希望对大家有帮助。
篇8:ASP缓存技术详解
这篇文章主要介绍了ASP缓存技术详解,本文详细介绍了ASP缓存技术、ASP缓存的分类、ASP缓存的实现方法和使用方法等,需要的朋友可以参考下
一、何谓ASP缓存/为什么要缓存
当你的web站点采用asp技术建立的初期,可能感觉到的是 asp动态网页技术带来的便利性,以及随意修改性、自如的http控制,但是,随着访问量的增加,你一定会发现自己的站点访问速度越来越慢,IIS重新启动得越来越频繁。接下来,你一定想优化asp,诸如更换性能更优异的数据库、建立索引、编写存储过程等等。这些措施有些不需要增加成本压力,有些则成本压力很大(譬如丛access到SQL),而且效果还不一定。
面对web访问压力,我认为最经济的办法是利用缓存优化技术来实现缓解 web的服务压力。
Web访问量增加通常意味着以下资源需求的快速增长:
1、网卡流量增加,需要消耗更多的CPU处理网络流量和网络I/O线程。
2、需要更频繁的打开/关闭数据库连结(如果使用数据库技术―通常asp都会采用数据库作为数据存储),严重消耗资源的事物数量、以及事务相互竞争资源引起的死锁、会增加网络I/O或者CPU消耗。
3、如果采用session的话,IIS为了维持状态,会消耗更多内存,而内存消耗可能会引发物理内存不够,引起物理内存同辅存间的频繁交换,从而引起代码执行的停顿,web响应阻滞。
4、由于访问的不到及时响应,会引起网页访问故障,导致用户刷新,从而加剧CPU、内存等资源需求。
实际上,考虑通常的web应用程序,很多时候的动态代码执行是不必要的。
二、asp缓存的分类
擅自总结,asp的缓存可以分为两类:
1、文件缓存
所谓文件缓存,就是根据逻辑判断,一段时间内某个asp的特定执行将不会有很大的变动,因而将内容以静态html的形式存放,然后以web的重定向技术让客户端访问静态文件,以达到减少CPU、数据库资源等的需求。这样的应用很多,譬如很多论坛就是在回复贴子的时候将整个贴子重新生成一个静态文件,然后进行重定向的,例如 donews.com的论坛。该成静态还有一个副作用(好处)C可以很容易被google等搜索引擎收录。一些所谓新闻发布系统的都采用了此技术。
2、文件片断缓存
所谓文件缓存,也是基于逻辑判断,某部分数据(通常是需要消耗资源的大容量数据库查询取得)在一定时间内不会改变,所以我们可以将这些数据利用文件的形式进行存储,当需要时候,可以通过读取文件来获取数据,避免增加数据库的负担。例如,我们通常将一些数据以xml格式存储,然后利用xslt技术实现显示(xml处理通常需要大量CPU资源,所以通常是IE直接读取xml到客户端在客户的CPU上进行处理)。CSDN的论坛就是这样处理的。
3、主存缓存
除此之外,还可以考虑在内存中处理缓存,将需要及时响应的内容存储在内存中,一旦访问需求,立即从快速的贮存中输送出去。如果极大量的访问需求集中在几个少量的页面或者主存足够多,我想采用主存缓存一定可以大幅度提高web访问性能。
三、如何实现/使用缓存
实现缓存需要考虑以下问题:
1、哪些页面会在短时间内不会改变?
分析自己的站点,这样的页面很多。譬如一个站点通常都有新闻资讯类的栏目,这些栏目通常都是站点维护人员在一天的某个时间发布资料,之后很少改动页面。那么这些页面就适合于采用静态文件缓存。实际上,所谓新闻发布系统就是这么做的,那么那也可以参考这些系统的思想改造自己的原有动态asp页面。
2、那些页面针对全部访问者都采用同一个逻辑生成(也就是不区分访问者)。
除了新闻资讯之类的栏目所有访问者都看一个界面外,论坛等消耗资源的应用一般也可以设计成统一逻辑生成(同一个贴子,张三李四看的都一样),针对这类应用页面我们也可以采用静态缓存来实现。也可以考虑将数据片断化,利用脚本技术在服务器处理能力之外也就是客户端浏览器进行处理。
3、采用缓存的代价和收获。
主要就是“空间换(响应)时间”。利用缓存技术将之后频繁需要的内容进行预处理,使之提高web服务器响应能力,更重要赢得访问者的欢心。
代价就是web空间需求增加,同时又可能影响到访问效果。
但我认为适当的缓存,是利大于弊的。
4、那些地方不适宜采用缓存
动态查询页面,每个人的查询内容不一样,所以显示结果不大一样,所以不大可能将查询结果生成缓存,所以采用缓存较为复杂且缓存利用率底下,造成管理成本上什(假设你缓存了1000个查询关键字,那么管理这些关键字同缓存的对应也是麻烦事)。
四、实例分析
假设一个建议论坛的原有布局如下:
根目录下:
default.asp 首页,一般是精华、推荐之类
listBorad.asp 该文件列出全部分栏目的名称和介绍,如果携带参数MainBID就表示要列出板块下的栏目
listThread.asp 该文件如果不携带任何参数表示列出全部的贴子,携带MainBID表示列出某块的全部贴子。如果携带subBID表示列出具体栏目的贴子。如果携带 page参数表示分页列出主题。
ViewThread.asp 列出某个贴子内容。我们假设贴子显示为一个发言,任意跟贴全部列在后面。ID参数为要显示的贴子。
Reply.asp 回应某个贴子,携带参数Id回应某个贴子
其它的暂不讨论。
以上,我们可以看到,如果全部是采用原始的 ASP/PHP来做,那几乎每一个asp文件的执行都需要数据库操作,频繁的查询,多表查询。要知道查询数据库最终会带来性能的下降,响应速度下降,带给访问者缓慢的浏览影响,不利于web的质量。更重要的是对于甲乙两个人来将,他们访问ViewThread.asp之类的如果ID一致,那么很多时候他们会看到同样的内容(他们的浏览器收到的HTML代码几乎一样),但是为了这“同样的内容”,服务器需要打开数据库连结、查询,读取纪录,显示,关闭纪录、数据库连结。。。。以下列的消耗服务器资源的操作,如果是更多的人来访问,最终的结果是这些人加剧消耗服务器资源。实际上,这些为了“同样的内容”所做的重复劳动是可以利用缓存技术进行优化避免的。譬如:
在reply.asp提交内容后,我们立即调用生成静态的功能,将整个贴子内容存储为viewThread_xxxx.htm之类的静态html文件,再通常情况下访问viewThread.asp?ID=xxxx的时候,系统自动 redirect到对应的静态文件viewThreadxxxx.htm去。这样,当一个贴子没有最新发布时候,他始终是静态内容提供给浏览者;一旦有了新的提交,将会更新到静态文件中去,这样,将会节省很多次数据库操作,大大提高响应速度。
listBorad.asp也可以实施静态化。我们可以分析其可能携带的参数,将缓存文件名设定为listBoard_xx.htm,在增加新的栏目时候进行更新 listBoard_xxx.htm。listThread.asp也类似,只不过由于其参数更多,所以缓存文件也会很多。击若要缓存 listThread.asp? subBID=xxx&page=2,那么对应的静态文件是listThread_xxx_p2.htm。default.asp也一样。
那么如何判断什么时候更新?在什么时机更新?
讨论listThread.asp? subBID=xxx&page=2,我们在执行listThread.asp俄时候提取subID和page,然后探测 listThread_xxx_p2.htm是否存在,如果不存在就调用静态生成功能进行生成该文件,最终重定向到此静态文件。注意,此处的不存在就意味着出现了新的内容需要我们进行更新。
那如何造成文件不存在呢?删除。我们在发表一个新的贴子、删除贴子、移动贴子的时候我们可以将类似listThread_xxx_p2.htm之类的静态文件全部删除。这样就通知了何时要进行缓存。
现在还剩下一个问题,如何生成静态文件?
我们注意到,之前我们提到的“同样的内容”。我们可以将改造前的default.asp、listThread.asp等拷贝一个副本,取名为default_d.asp、listThread_2.asp,且在同一个目录中(理论上 listThtrad.asp?subID=123同LISTtHREAD_D.ASP?SUBID=123的访问结果会是同样的内容),这样我们在需要生成静态文件的逻辑中,通过WEB访问请求的方式调用改造前的副本,得到html代码,并存储为静态文件。这个web请求实际上相当于在任何真实浏览者访问静态内容之前,由服务器自身现察看将会输出的html,然后返回这些代码,利用文件操作功能存储为静态文件。这样,缓存文件就在真正浏览者之前被创建。
这样的方案几乎不触动原来的布局,几乎不会造成因为改造出现404之类的错误。其次,静态文件也会帮助你的站点容易被被google之类的搜索引擎收录。何乐而不为?
最后,提醒,通过web访问,asp编程环境下,很多人采用xmlHTTP组件访问,这会造成很多问题。 xmlhttp自身会cache请求的资源,导致我们通过此组件请求得到的内容不是最新的,造成逻辑上的混乱。所以,应当选择xml Server http对象或者winhttp组件来实现web请求资源。
使用ASP中的缓存技术可以很大程度上提高你的网站性能,其实这些实现方法是非常的简单,它将说明如何在服务器上的缓存是如何工作以及你如何使用一种被称为断开连接的ADO连接技术。
在介绍这些技术之前先说明一下到底什么是ASP的缓存技术。
所谓缓存其实就是在内存中开辟一个用来保存数据的空间,使用缓存你就不用频繁的访问你保存在硬盘上的数据了,灵活的使用缓存你就免去了心疼的看着可怜的硬盘饱受读数据时的折磨了。当你一旦执行了一个查询动作,并且将查询结果放入缓存中后,你就可以很迅速的重复访问这些数据了。而如果你不把数据放入缓存的话,当你再次执行这个查询时,服务器会将进程耗费在从数据库中获取并排序上了。
当数据保存在缓存中时,再次查询时耗费的时间主要是在显示数据的时间上了。
也就是说,我们不应该把经常需要改变的数据放到服务端的缓存中,我们应该把改变少,但是又需要经常访问的数据放到缓存中。
现在我们先讨论ASP在服务端使用缓存的技术,过会再讨论ASP如何在客户端使用
缓存的技术。
当你有大量的数据(静态的,就是说变动比较少的)需要显示给客户端时,你就可以考虑使用服务端的缓存技术了。这种技术尤其适用于那些显示风格一致性比较强的网站(呵呵,对于非主流的网站可不好用的说。)
其实实现方法特别的简单,大家只要看看下面这个简单的例子就明白了。
这是一个用来显示书籍分类的例子程序
DisplayBooks.ASP文件:
代码如下:
< %@ LANGUAGE=JavaScript. % >
< html >
< body >
< form. method=post >
书籍分类; < %= getBooksListBox % >
< p>
< input type=submit >
< %
function getBooksListBox()
{
BooksListBox = Application(“BooksListBox”)
if (BooksListBox != null) return BooksListBox;
crlf = String.fromCharCode(13, 10)
BooksListBox = “< select name=Books>” + crlf;
SQL = “Select * FROM Books orDER BY Name”;
cnnBooks = Server.CreateObject(“ADODB.Connection”);
cnnBooks.Open(“Books”, “Admin”,“”);
rstBooks = cnnBooks.Execute(SQL);
fldBookName = rstBooks(“BookName”);
while (!rstBooks.EOF){
BooksListBox = BooksListBox + “ < option>” +
fldBookName + “” + crlf;
rstBooks.MoveNext();
}
BooksListBox = BooksListBox + “”
Application(“BooksListBox”) = BooksListBox
return BooksListBox;
}
% >
很简单把,其实就是用了很简单的Application技术,而且就一句话的不同:
代码如下:
Application(“BooksListBox”) = BooksListBox
你可以验证一下你就会发现服务器上的请求数量会降低不少的,
这种情况尤其适合与那些更新不是很频繁的网站内容,例如你一天(或则很长时间)只更新一次。
下面再讨论一种客户端的缓存技术这种技术也叫断开连接的ADO连接技术(翻译水平太次,听上去怎么这么别扭)。这种技术主要使用在用来保存用户个人信息,例如用户的密码,代号等等上面。它主要使用了ADO的一些属性。同时也回答了一些网友曾经提到过的能否在Application中使用ADO对象的问题。解释不清楚,下面让代码来发言:
文件GLOBAL.ASA:
代码如下: