2.7.3 使用Hidden Frame
你可以使用Hidden Frame在客户端缓存数据,这就避免了使用hidden field和使用view state时每次页面回送时的缓存数据往返。比如你可以秘密的加载多个页面所需要的图片,这并不会消耗服务器资源。
优点:
a. 可以加载较多数据而不只是单个栏位的值;
b. 避免了不必要的多次回送中的数据往来;
c.可以缓存和读取在不同表单中存储的数据项(可以同时缓存多个页面的数据);
d.可以访问同一站点不同frame中的客户端脚本数据。
缺点:
a. 有些浏览器不支持frame;
b. 源代码可以在客户端看到,有潜在的安全威胁;
c. 隐藏frame的数量没有限制,如果框架页面包含较多hidden frame的话,在首次加载时速度会有限制。
示例代码如下:
<FRAMESET cols="100%,*"> <FRAMESET rows="100%,*"> <FRAME src="https://www.jb51.net/contents_of_frame1.html"> </FRAMESET> <FRAME src="https://www.jb51.net/contents_of_hidden_frame.html"> <FRAME src="https://www.jb51.net/contents_of_hidden_frame.html" frameborder="0" noresize scrolling="yes"> <NOFRAMES> <P>This frameset document contains: <A href="https://www.jb51.net/contents_of_frame1.html" TARGET="_top">Some neat contents</A> </NOFRAMES> </FRAMESET>
2.7.4 使用Cookies
Cookie是可以在客户端存储数据另一种方案,这里不过多介绍。
优点:
不需要服务器资源;数据保存在客户端,在用户请求时发送到服务器上。
使用简单。Cookie包含简单的键值对,主要保存轻量级的文本数据。
支持过期策略;可以指定当会话结束时过期,也可指定一个时间策略。
缺点:
数据量的限制;
用户可能设置为拒绝Cookie;
安全问题;用户可能更改机器上的cookie信息,造成基于cookie的系统运行失败;
可能过期或被用户删除,造成一定程度的不可用。
参看示例代码:
public class CookiesSample : System.Web.UI.Page { private void Page_Load(object sender, System.EventArgs e) { if (this.Request.Cookies["preferences1"] == null) { HttpCookie cookie = new HttpCookie("preferences1"); cookie.Values.Add("ForeColor","black"); cookie.Values.Add("BackColor","beige"); cookie.Values.Add("FontSize","8pt"); cookie.Values.Add("FontName","Verdana"); this.Response.AppendCookie(cookie); } } private string getStyle(string key) { string val = null; HttpCookie cookie= this.Request.Cookies["preferences1"]; if (cookie != null) { val = cookie.Values[key]; } return val; } }
2.7.5 使用Query String
Query String是在用户请求的URL后加上相应的参数来使用的,只能在使用HTTP GET方式调用URL时可用。
优点:
d.不需要服务器资源,参数附在URL里面;
e. 应用面广,几乎所有浏览器都支持;
f.实现简单,服务端使用Request对象可直接读取。
缺点:
a.参数直接对用户可见,不安全;
b.URL长度的限制,多数浏览器不支持超过255字符的URL。
示例代码:
string user = Request.QueryString["User"];
2.7.6 小结
下表是使用客户端缓存的建议:
2.8 使用Internet Explorer缓存
IE提供了缓存机制,可以实现对页面的数据进行缓存,同时可以指定过期时间。用户在IE中请求此页面,如果当过期时间没有到,则自动从缓存中提取并呈现;否则,就到服务器上获取新版本。IE对页面的缓存可以在IIS中设置。
适合在Internet Explorer中缓存的内容
页面中的图像文件;
静态的文本内容;
页面的标题栏和页脚内容——改变频率很低,可以给用户一个迅速相应;
网站的首页——更改次数页时相对较少的;
使用动态HTML在客户端保存的特定数据,比如客户自定义的颜色和布局设置信息。
优点:
减少对服务器的请求和网络负担;
支持离线浏览;
可以实现基于XML的客户端复杂应用。
缺点:
客户端的过期时间必须预先指定而不能依赖于服务器更新;IE采用的是Lazy更新机制,优先从缓存中提取数据;
对其它客户端浏览器没有作用;
存储的数据没有加密,不能保证客户端数据安全。
示例代码:
<META HTTP-EQUIV="expires" CONTENT="Tue, 23 Jun 2002 01:46:05 GMT">