asp.net高性能页面制作10则
【IT168技术文档】
1.利用SqlDataReader.NextResult()返回多次结果.
比如:一些SQL语句中带有多次"Select",那么我们就可以使用这个办法返回每次select的结果.
2.介绍一个经典的分页代码,这个代码老掉牙了,尽管如此,还是值得大家看看,下面小弟贴出来:
尽管他说最好不要使用Dynamic Sql来做做分页,但是我还是觉得如果每次次都要修改这个储存
过程来适应新的分页是很麻烦的,我还是建议改写这个东西加入两个变量table 和fliter.弄得整天修改.
这里有Dynamic Sql可以这找到代码.
CREATE PROCEDURE northwind_OrdersPaged( @PageIndex int, @PageSize int)ASBEGINDECLARE @PageLowerBound intDECLARE @PageUpperBound intDECLARE @RowsToReturn int-- First set the rowcountSET @RowsToReturn = @PageSize * (@PageIndex + 1)SET ROWCOUNT @RowsToReturn-- Set the page boundsSET @PageLowerBound = @PageSize * @PageIndexSET @PageUpperBound = @PageLowerBound + @PageSize + 1-- Create a temp table to store the select resultsCREATE TABLE #PageIndex ( IndexId int IDENTITY (1, 1) NOT NULL, OrderID int)-- Insert into the temp tableINSERT INTO #PageIndex (OrderID)SELECT OrderIDFROM OrdersORDER BY OrderID DESC-- Return total countSELECT COUNT(OrderID) FROM Orders-- Return paged resultsSELECT O.*FROM Orders O, #PageIndex PageIndexWHERE O.OrderID = PageIndex.OrderID AND PageIndex.IndexID > @PageLowerBound AND PageIndex.IndexID < @PageUpperBoundORDER BY PageIndex.IndexIDEND3.使用Connetion pooling增强sql server缓冲.简单地在连接字符串加入:"Data Source=192.168.1.2;.....;pooling=true;"便可使用此功能.
4.考虑加入最大可能的Cache体系.Cache有几种办法,HttpContext.Cache 和 Page.Cache 和局部Cache...以及Database的 Cache.其中Database的Cache可以参考这篇精华文章
5.每一个Request Cache他说自己再Communicate Server Start kit开发了一个控件,对HttpContext.Current.Request自动进行 Cache,这个Start kit可以再www.asp.net上找到.
6.后台处理讲了一大堆,但是我还是不知道他说什么,大概是说搜索系统和email系统中,利用timer自动处理一些日志.
7.Page Out Cache他说很多人不懂的使用这个Cache,这个Cache什么时候用?主要是当需要用到HttpMedule or HttpHandler输出一些内容的时候,OutPut Cache就是对这个起作用.simply use: <%@ Page OutputCache VaryByParams="none" Duration="60" %> 就可以建立了.
8.IIs6它说IIS5远远不如IIS6,IIS6 more feature .
9.利用gZip压缩交换数据包它说尽管IIS6支持gZip, 但是却没有一个图形界面方便操作,关于怎么配置,它又指向了另一篇文章,我就懒得贴了
10.关闭ViewState你可以这么做:<%@ Page EnableViewState="false" %>但是考虑什么需要关闭这个,就是你的页面实际上并不需要postback的时候,或者你每次请求此页面的时候,都自动重绘控件,你就可以用它了.讲得这么玄,其实就是说你的页面如果只是用来纯显示的话,你就可以关闭之.
0
相关文章