首页 > 编程 > .NET > 正文

ASP.NET笔记之 viewstate与cache的使用

2024-07-10 12:45:42
字体:
来源:转载
供稿:网友

1、

(1、默认情况下ASP.Net是启用ViewState的,这样在页面中会生成冗长的隐藏字段,ViewState对于需要PostBack处理的页面才可能有用,对于新闻展示页面不需要交互完全没必要用ViewState。

(2、禁用ViewState的方式:
• 页面整体禁用ViewState:在顶部Page中EnableViewState="False"
• 指定控件禁用ViewState,在控件上EnableViewState="False"

(3、页面禁用ViewState以后并没有完全去掉ViewState,只要ViewState不是很大就可以了。如果要求一点儿ViewState都不能有,那么则页面中不能有runat=server的form,如果页面中没有表单元素,把form完全去掉就可以。如果Button等服务端控件没有放到runat=server的form中,那么则是不可用的。

 

2、cache

(1、如果每次进入页面的时候都查询数据库生成页面内容的话,如果访问量非常大,则网站性能会非常差。而如果只有第一次访问的时候才查询数据库生成页面内容,以后都直接输出内容,则能提高系统性能。这样无论有多少人访问都只访问一次数据库,数据库压力不变。

      缓存是一种用空间换取时间的技术,存在于计算机中很多地方,用来将一些慢速设备中的常用数据保存在快速设备中,取数据的时候直接从快速设备中取。比如CPU二级缓存、windows文件读取缓存。

     缓存存在失效的问题:为了保证从缓存中读取数据和慢速数据中数据一致,则需要在慢速数据中对应的数据发生变化的时候,清除缓存中相应的数据。
缓存是改进网站性能的第一个手段,就像索引是改进数据库性能的第一个手段一样。
ASP.net缓存主要分为:页面缓存、数据源缓存、数据缓存这三种主要类型。

(2、页面缓存

       给页面添加下面的标签就可以启用页面缓存,
代码如下:
<%@ OutputCache Duration="20"  VaryByParam="none"%>

这样整个页面的内容都会被缓存,页面中的ASP.Net代码、数据源在缓存期间都不会被运行,而是直接输出缓存的页面内容。 Duration表示缓存时间,以秒为单位,超过这个时间则缓存失效,再次生成以后会再缓存20秒,以此类推。在Page_Load处设置断点、修改数据库数据测试。
      缓存是针对所有这个页面的访问者。这样1个访问者和1万个访问者、一次访问和100万次访问对数据库的压力是一样的。

      ***对于看新闻页面来讲,如果如上设置的话,则会缓存在第一个看到的新闻,因为?id=2、?id=3只是页面的不同参数而已,为了能让不同的新闻各自缓存,因此可以设置VaryByParam="id",表示对于不同的id参数进行单独缓存。如果有多个确定缓存的参数,则将参数名用分号隔开即可,比如VaryByParam="id;number"。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表