asp.net高性能页面制作10则

原文;http://msdn.microsoft.com/msdnmag/issues/05/01/ASPNETPerformance/

代码示例:http://msdn.microsoft.com/msdnmag/issues/05/01/ASPNETPerformance/default.aspx?fig=true#fig1

内容概述:

1.利用SqlDataReader.NextResult()返回多次结果.
比如:一些SQL语句中带有多次"Select",那么我们就可以使用这个办法返回每次select的结果.

2.介绍一个经典的分页代码,这个代码老掉牙了,尽管如此,还是值得大家看看,下面小弟贴出来:
尽管他说最好不要使用Dynamic Sql来做做分页,但是我还是觉得如果每次次都要修改这个储存
过程来适应新的分页是很麻烦的,我还是建议改写这个东西加入两个变量table 和fliter.弄得整天修改.
这里有Dynamic Sql可以这找到代码.

CREATE PROCEDURE northwind_OrdersPaged
(
    @PageIndex int, 
    @PageSize int
)
AS
BEGIN
DECLARE @PageLowerBound int
DECLARE @PageUpperBound int
DECLARE @RowsToReturn int

-- First set the rowcount
SET @RowsToReturn = @PageSize * (@PageIndex + 1)
SET ROWCOUNT @RowsToReturn

-- Set the page bounds
SET @PageLowerBound = @PageSize * @PageIndex
SET @PageUpperBound = @PageLowerBound + @PageSize + 1

-- Create a temp table to store the select results
CREATE TABLE #PageIndex 
(
    IndexId int IDENTITY (1, 1) NOT NULL,
    OrderID int
)

-- Insert into the temp table
INSERT INTO #PageIndex (OrderID)
SELECT 
    OrderID
FROM 
    Orders
ORDER BY 
    OrderID DESC

-- Return total count
SELECT COUNT(OrderID) FROM Orders

-- Return paged results
SELECT 
    O.*
FROM 
    Orders O,
    #PageIndex PageIndex
WHERE 
    O.OrderID = PageIndex.OrderID AND
    PageIndex.IndexID > @PageLowerBound AND
    PageIndex.IndexID < @PageUpperBound
ORDER BY 
    PageIndex.IndexID

END
3.使用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的时候,或者你每次请求此页面的时候,
都自动重绘控件,你就可以用它了.讲得这么玄,其实就是说你的页面如果只是用来纯显示的话,你就可以关闭之.


阅读更多
个人分类: MsdnMagazine_AspNet
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭