网站链接: 环球农商网
当前位置: 首页 > 资讯动态  > 平台资讯

ASP.NET缓存策略

2019/3/25 9:28:55 人评论

要提升ASP.NET应用程序的性能,最简单、最有效的方式就是使用内建的缓存引擎。虽然也能构建自己的缓存,但由于缓存引擎已提供了如此多的功能,所以完全不必如此麻烦。在很大程度上,ASP.NET开发者在Web应用程序中,能将缓存引擎的功能直接包装到自己的数据表示及访问类中。如本文所述,整个过程其实非常简单。
ASP.NET的缓存引擎支持三种类型的缓存:
整页输出缓存是在一个页被首次请求时,将整个页呈现好的HTML内容缓存下来。后续请求将直接取用缓存拷贝。
部分缓存是指缓存一部分HTML内容,这类似一个Web用户控件的输出。之所以叫这样的一个名字,是因为我们一般说“将一部分HTML提交给一个页”。
数据缓存关注的是单独的变量或数据项的缓存。它在比以上两种缓存类型都要低的一个级别上工作。
整页输出缓存
整页输出缓存是最简单的缓存类型,它只要求为准备缓存的页添加一个预处理指令OutputCache。使用这种缓存,就不必重新处理一个页的Init,Load,PreRender,Render以及Unload事件。假如那些事件要访问像数据库那样的一个后端系统,那么节省的时间将是非常可观的。ASP.NET可缓存一个页的几个变体,并将每个页都与后续请求相关联。所有这些都由OutputCache预处理指令来控制,该命令要放在一个ASPX页的顶部,并采用以下格式:
<%@ OutputCache
Duration="#ofseconds"
Location="Any | Client | Downstream | Server | None"
VaryByCustom="browser | customstring"
VaryByHeader="headers"
VaryByParam="parameter name" %>
OutputCache预处理指令最多可利用5个相关的属性来控制缓存行为。表A总结了这些属性及其含义。表A属性 说明
Duration 该属性指定了网页要缓存的时间(以秒为单位)。通过为一个页设置该属性,可为来自对象HTTP响应建立一个过期策略。这是一个必需属性。如果不包括它,会发生解析器错误。注意它指定的是绝对过期时间,而非周期性过期。
Location 用这个属性指示Web服务器和下游设备(比如代理服务器和浏览器)来缓存页面内容。默认为Any,该属性并非必需的。
VaryByParam 该属性使用由分号分隔的字符串列表来改变输出缓存。默认情况下,这些字符串对应于随GET方法属性发送的查询字符串值,或对应于使用POST方法发送的一个参数。如果将该属性设为多个参数,输出缓存将针对指定的每个参数,包含所请求的文档的一个不同版本。可能的值包括None、*以及任何有效的查询字符串或POST参数名。如果没有设置其他属性,该属性就是必需的。
VaryByCustom 对自定义输出缓存需求进行表示的任何文本都要包含在这个属性中。如果为属性指派浏览器的一个值,缓存会根据浏览器名称及主版本信息而发生变化。如果输入一个自定义字符串,就必须在应用程序的Global.asax文件中覆盖GetVaryByCustomString方法。
VaryByHeader 该属性使用由分号分隔的HTTP标头列表来改变输出缓存。如果属性设为多个标头,输出缓存将针对指定的每个标头,包含所请求文档的一个不同的版本。OutputCache属性
OutputCache预处理指令可在内存中方便地创建静态页的单一版本,例如:
<%@ OutputCache Duration=“300" VaryByParam="None" %>
还可根据id查询字符串参数来缓存多个版本,例如:
<%@ OutputCache Duration=“300" VaryByParam="id" %>
在上述两个例子中,网页会在5分钟(300秒)后从缓存中清除,该数字是由Duration属性指定的。根据自定义信息来缓存
使用VaryByCustom属性,可根据您提供的自定义信息来创建一个页的缓存版本。例如,要为每种类型的浏览器创建网页的一个不同版本,可使用以下预处理指令:
<%@ OutputCache Duration=“300" VaryByParam="None" VaryByCustom=“browser”%>
使用VaryByCustom,还可根据应用程序特有的信息来缓存网页。例如,要根据当前用户的部门名称来创建网页的缓存版本,可使用以下预处理指令:
<%@ OutputCache Duration=“300" VaryByParam="None" VaryByCustom=“department”%>
然后,在用于Global.asax文件的代码隐藏类中,可覆盖GetVaryByCustomString方法,如以下VB.NET代码所示:
Public Overrides Function GetVaryByCustomString( _
ByVal context As System.Web.HttpContext, _
ByVal custom As String) As String
If custom = "department" Then
' return the department for the current user
End If
End Function
这里向GetVaryByCustomString方法传递了在预处理指令中使用的自定义值。ASP.NET运行库

相关资讯

  • document.cookie:客户端操作cookie

    我们已经知道,在 document 对象中有一个 cookie 属性。但是 Cookie 又是什么?“某些 Web 站点在您的硬盘上用很小的文本文件存储了一些信息,这些文件就称为 Cookie。”—— MSIE 帮助。一般来说,Cookies 是 CGI 或类似,比 HTML …

    2019/4/12 8:18:11
  • 用ASP实现分级权限控制

    本文实现的是一个帐务管理系统中分级权限的控制,程序使用ASP和JavaScript编写,在装有IIS4.0的win NT服务器上运行,速度快,易维护。  权限级别划分如下:  ①、院长和财务科长:不能输入,可以无限制查询、统计;  ②、副院长:不能输入,可以查询、统计其分管部…

    2019/4/12 8:18:11
  • ASP实现Rewrite模拟生成静态页效

    以前刚刚懂404.asp的时候,曾经幻想把所有程序代码写到404.asp中,实现一个模拟生成静态网页的站,如果程序小还可以,用404.asp实现Rewrite还是一个不错的选择,如果程序代码多达100000行,恐怕就要开始爬了  直到看到asp的Server.Transfer,用404模拟生成静态页的站的念…

    2019/4/12 8:18:11
  • ASP随机涵数生成100条8位字母和数字混合密码

    <%for i = 1 to 100%><%Randomizepass=""Do While Len(pass)<8 随机密码位数num1=CStr(Chr((57-48)*rnd+48)) 0~9num2=CStr(Chr((122-97)*rnd+97)) a~zpass=pass&num1&num2loop原创:www.devdao.com%><%=pass%><br><%next…

    2019/4/12 8:18:11

共有条评论 网友评论

验证码: 看不清楚?