源码
资讯
  当前位置:源码网网络学院网络编程ASP教程 → ASP网页缓存和
特别推荐
热点TOP10
本周下载排行
本月下载排行
ASP网页缓存和
日期:2007年9月10日 作者: 人气: 查看: [大字体 中字体 小字体]
用户的浏览器以及他们和服务器这间的任一代理服务器,都可以缓存HTML和用ASP创建的网页。当用户随后请求页面时,浏览器就发送一个“最新修改”的请求到服务器(使用一个包含缓存版本的日期的HTTP_IF_MODIFIED_SINCE报头),询问网页是否已被修改。
若没有被修改,服务器应用状态码和消息“304 Not Modified”来响应,浏览器将使用缓存的内容而不会通过网络下载一个副本。若已经存在已修改的版本,它就会与“200 OK”状态码和消息一道被发送出去。
1)     Response.CacheContol属性
其他的一些因素也会影响这一处理过程。然而,任一被网页使用的网络路由内的代理服务器(一般位于客户机端),能被通过设置 Response.CacheControl属性为Private来放弃缓存网页。在ASP 3.0中对ASP网页这是缺省的,不用设置。但在网页为个别访问者特别定制时尤其有用。这可以阻止别的在同一网络上的用户进入同一网页。当 CacheControl的属性值被设定为Public时,允许服务器缓存网页。注意,一些代理服务器可能表现得不尽相同,或忽视或越过这个报头。

<%
If Request.Form(“public”) = ''''''''on" Then  ''''''''Cache-Control check box was ticked
       Response.CacheControl = "Public"
   Else
       Response.CacheControl = "Private"
   End If
%>
   <HTML>
   ...
   Cache-Control is: <B><% = Response.CacheControl %></B><P>
   value in text box is: <B><% Response.Write Request.Form(“textbox”) %>
   <%
   Response.Write Right(“0” & Hour(Now),2) & “:” & Right(“0” & Minute(Now),_
           & 2) & “:” & Right(“0” & Second(Now),2)
   %></B>
通过单击浏览器上的“Back”和“Forward”,能看到代码是自动执行还是使用缓存的副本,结果随浏览器的不同而变.

2)     Response.Expires和Response.ExpiresAbsolute属性
控制缓存的网页存放时间的两个属性为Response对象的Expires和ExpriesAbsolute属性。Response.Expires定义了风页在从缓存区被丢弃前应保持有效的时间长度,以创建以来的分钟数形式表示。ExpiresAbsolute属性为到期时间设置了一个绝对的日期和时间。

<%
‘Write HTTP headers before any other output
If Request.Form(“expires”) = “on” Then _
    Response.Expires = Request.Form(“expires_value”)
If Request.Form(“expiresabs”) = “on” Then _
    Response.ExpiresAbsolute = Request.Form(“expiresabs_value”)
If Request.Form(“lastmod”) = “on” Then _
    Response.AddHeader “LAST-MODIFIED”, Cstr(Request.Form(“lastmod_value”))
If Request.Form(“pragma”) = “on” Then _
    Response.AddHeader “PRAGMA”, CStr(Request.Form(“pragma_value”))
If Request.Form(“refresh”) = “on” Then _
    Response.AddHeader “REFRESH”, CStr(Request.Form(“refresh_value”))
If Request.Form(“addheader”) = “on” And Len(Request.Form(“addheader_name”)) Then _
    Response.AddHeader CStr(Request.Form(“addheader_name”)), _
            CStr(Request.Form(“addheader_value”))
If Request.Form(“status”) = “on” Then _
    Response.Status = Request.Form(“status_value”)
%>
<HTML>
...
... Show code and execution time
...
其余部分仅仅是显示已被执行的代码和执行时间。读者会注意到包含在网页中的定制的报头“PRAGMA“,一些(先前的)代理服务器使用它作为网页是否应被缓存的指示。缺省是网页被缓冲,除非接受到HTTP报头
“PRAGMA=NO-CACHE“。

当页面的url参数中含有动作指令时,通常我们都会设置页面立即到期,防止同一命令被执行两次。

(出处:源码网)

百度搜索 Google搜索 雅虎搜索 我要投稿
相关文章: 相关软件: