使用客
户端选项存储页信息
而
不使用服务器资源
的
这些选项往往具有
最低
的安全性但具有
最快
<script type="text/javascript">
</script>
的服务器性能,因为对服务器资源的要求是适度的。但是,由于必须将信息发送到客户端来进行存储,因此对于以这种方式可以存储多少信息存在一定的
客观限制
。
客户端保存的方式一般有如下
4
种:
1 <script type="text/javascript">
</script>
ViewState:
利用场合为:
在
对同一页的多个请求间自动保留值
,多用于
客户端的一些事件
。
,
典型利用场合为:页面信息重置
, <script type="text/javascript">
</script> 登陆出错次数统计,
Grid
列排序等。
优点:不利用服务器端资源,实现简单
,相对高的安全性:因为经过哈希计算和压缩,
并且
针对
Unicode
<script type="text/javascript">
</script>
实现进行编码
。
缺点:
因为
ViewState
存储在页面本身,所以无法存储较大的值
。并且通过源文件可以看见其中的值
<script type="text/javascript">
</script> ,
虽然经过哈希计算和压缩,但仍有被篡改的风险。
可存储的类型:
string,integer,bool,array,arr <script type="text/javascript">
</script> aylist,
hashtable
以及其他
可以序列化的类型。
2
HiddenField
:
利用场合为:
存储
少量
页面 <script type="text/javascript">
</script> 中经常改动的
信息
,多和客户端脚本一块使用,典型利用场合为:客户端
经历一系列验证之后向服务器端回发,服务器端从
客户端
HiddenField
中获取值,进行处理。
例如 <script type="text/javascript">
</script> :
LeyserHomepage
中,要删除一项产品,需要在客户端弹出
确认
Form
,用户确认之后再
PostBac <script type="text/javascript">
</script> k
回服务器端进行数据库
Delete
操作,当用户确认要
删除时,将当前要删除的产品
ID
存放到一个
HiddenField
中,然后
执行
<script type="text/javascript">
</script>
Form(0).submit
回发到服务器端,服务器端再从
HiddenField
获取产品
ID
值,进行数据库操作。
优点:不使用服务器资源 <script type="text/javascript">
</script> ,广泛
支持
,实现简单
缺点:
安全性
不高,因为它被
包含
在页面上进行
发送,所以可以通过源文件看见他的内容。
存储结构少,仅仅
支持
string,integer,
bool,
array,arraylis <script type="text/javascript">
</script> t
等简单的数据结构。
并且在其上只存放简单的单值,若要存放多值,需要额外编码。
存储量少,因为它被存储在页面本身,所以 <script type="text/javascript">
</script> 无法存储较大的值。而且
大的数据量会
受到防火墙
和代理的阻止。
注意:
使用了
HiddenField
之后,需要回发到服务器进行
<script type="text/javascript">
</script>
处理,应该使用
Http Post
方法而不是
Http Get
方法
(
通过
URL
请求访问
)
<script type="text/javascript">
</script>
3
Cookie:
利用场合为:
存储少量
页面中
经常
改动
的信息,
典型利用场合为:为登陆过的网站保存登陆用户名,
为用户输入提供方便 <script type="text/javascript">
</script> ,还有在一些用户自定义项目上保存用户的个性化设置。
优点:不使用服务器资源,实现简单,可配置到期时间。
缺点:大小
受到限制,一般浏览器支持的最大的
Cookie
<script type="text/javascript">
</script>
容量为
4096
字节。
客户端用户可能会配置
为拒绝
Cookie
。
安全性:保存在客户端的信息可能会被恶意用户修改或者获取,所以不应该保存敏感信息。
持久性:保存期限受到客户端的配置影响。
Cookie
通常用于
<script type="text/javascript">
</script> 存取
已知用户自定义内容的个性化情况。在大多数此类情况中,
Cookie
是作
为
“
标识
”
而不是
“
身份
验证
”
,所以在
Cookie
中只存
<script type="text/javascript">
</script> 储用户名、账户名或唯一用户
ID
(例如
GUID
)并使用它来
访问站点的用户个性化结构
是足
够的了
。
4
QueryString:
利用场合为:
<script type="text/javascript">
</script>
将信息从一页
传递给另一页的最简单的方法。
优点:不使用服务器资源,支持广泛,实现简单
缺点
:安全性,因为直接
在
URL
中暴露给用户 <script type="text/javascript">
</script> ,所以有被篡改的风险。
容量有限,一般的浏览器都有
255
个字符的限制。
只有在通
过其
URL
请求页时查询字符串才是可行的选择。不能从已提交给服务器的页读取 <script type="text/javascript">
</script> 查询字符串
。
视图状态: 需要 为将回发到自身的页存储少量信息。 ViewState 属性的使用将提供具有基本安全性的功能。
<script type="text/javascript"> </script> 隐藏域: 需要 为将回发到自身或另一页的页存储少量信息,并且不需要较高的安全性。 (客户端事件) 只能在提交到服 务器的页上使用隐藏域。 <script type="text/javascript"> </script>
Cookie: 需要在客 户端存储少量信息并且不需要较高的安全性。 (个性化)
查询字符串 : 可以将少量信息从一 页传输到另一页,并且不需要较高的安全性。 (页面 跳转 <script type="text/javascript"> </script> ) 只有在 请求同一页,或通过链接请求另一页时,才能使用查询字符串。
服务器端保存方式一般有如下
3
种:
存
储页信息的服务器端选项往往比客 <script type="text/javascript">
</script> 户端选项具有更高的安全性,但它们可能使用更多的
Web
服
务器资源,这可能在信息存储量较大时导致可缩放性问题
。
1
Application:
利用场合:
所有的请求都会需要的
<script type="text/javascript">
</script>
一些
共有资源,由
最先的一个
请求
率
先
获取之后
,拿出来共享,其他的请求就不用浪费资源进行再次获取。
典型利用场合:
一个股市
Web
<script type="text/javascript">
</script>
站点可能在一天中
每
5
分
钟从数据库获取大量的金融股票信息(也许是
40 MB
的数据),然后将
这些信息缓存在应用程序状态中,这样所有以后的查找请求都可以在应用程序状态中访问这些信息。其结果是极大地提高了每个 <script type="text/javascript">
</script> 请求的性能,因为传入的请求不需要跨进程、跨计算机或数据库的往返过程。
'
首次
Http Get
請求
If Not Me.IsPostBack Then
'
先判断
Application
中是否已経有了緩存
<script type="text/javascript">
</script> If Application.Item("Database") Is Nothing Then
'
若没有
,
从
DataCenter
中獲取
Dim ds As New DataSet
ds.ReadXml(Server.MapPath("TestData.xml"))
Dim dv As New DataView(ds.Tables(0))
'
拿到之后
, <script type="text/javascript">
</script>
緩存到
Application,
方便別的
进程
Http Get
請求復用
Application.Add("DataBase", dv)
End If
Dim dv1 As DataView
dv1 = Application.Item("DataBase")
'
緩存到
Session, <script type="text/javascript">
</script>
方便当前
进程
的
Http Post
請求
Session.Add("DataBase", dv1)
End If
优点:
易于实现,全局范围。
缺点:持久性,
若 <script type="text/javascript">
</script> 保存数据的服务器端进程被强行关闭,那么数据就会丢失,所以利用
Application
一定要有保底的策略,有的话就使用,没有的
话就自己拿。
耗用服务器端的内存。
注意:因为
Application
中的数据被多个进程公用,
所以
若需要更新其中的值时,需要利用 <script type="text/javascript">
</script> 如下的语句,做到独占更新:
Application.Lock()
Application.Item("DataBase
") =
NewDataBase
Application.UnLock()
2
<script type="text/javascript">
</script> Session:
利用场合:单独的一个进程内部使用,
存
储单独会话的短期的、敏感的数据。
优点:
易于实现,持久性,
可以应对
IIS
重启和辅助进程重启,
<script type="text/javascript">
</script>
可在多进程中使用
缺点:
耗用服务器端的内存。
3
Database:
优点:
安全性。
容量。
持久性。
<script type="text/javascript">
</script> 可靠性和数据完整性。
可
访问性。
广泛支持。
缺点:复杂,性能
方法
使用
场合
应用程序状态 存 <script type="text/javascript"> </script> 储更改不频繁的全局信息,这些信息由多个用户使用,此时安全性不成为问题。不要在应用程序状态中存储大量的信息。
会 话状态 存 储特定于单独会话的短期信息,并且需要较高的安全性。不要在会话状态中存储 <script type="text/javascript"> </script> 大量的信息。在支持许多用户的应用程序中,这可能会占用大量服务器资源并影响可缩放性。
数据 库支持 存 储大量信息,管理交易,或者信息必须可以经受得住应用程序和会话重新启动。数据挖掘十分重要,并且需要较高的安全性。 <script type="text/javascript"> </script>
应用程序状态 存 <script type="text/javascript"> </script> 储更改不频繁的全局信息,这些信息由多个用户使用,此时安全性不成为问题。不要在应用程序状态中存储大量的信息。
会 话状态 存 储特定于单独会话的短期信息,并且需要较高的安全性。不要在会话状态中存储 <script type="text/javascript"> </script> 大量的信息。在支持许多用户的应用程序中,这可能会占用大量服务器资源并影响可缩放性。
数据 库支持 存 储大量信息,管理交易,或者信息必须可以经受得住应用程序和会话重新启动。数据挖掘十分重要,并且需要较高的安全性。 <script type="text/javascript"> </script>