哪种动态页可以缓存?举例说明:
天气页,每 5 分钟更新一次。
列出新闻的主页或新闻发布的主页,每天更新 2 次。
公共基金运营列表,基本的统计数小时更新 1 次。
请注意,使用浏览器或代理缓存,只有很少的命中被记录到 Web 服务器上。如果想精确测量所有页面查看或者张贴广告,也许不喜欢使用浏览器和代理缓存。
浏览器缓存是由 Web 服务器发往浏览器的 HTTP 截至期限标题控制的。ASP 提供了两种发送标题的机制。要将页面设置为在未来某个分钟数后过期,请设置
Response.Expires
属性。以下的例子通知浏览器:内容在 10 分钟后过期:
<% Response.Expires = 10 %>
设置
Response.Expires
为负数或 0 则禁用缓存。一定要使用较大的负数,例如 -1000 (大于一天),来克服服务器时钟和浏览器时钟之间的差异。第二个属性
Response.ExpiresAbsolute
,允许设置内容过期的指定时间:
<% Response.ExpiresAbsolute = #May 31,2001 13:30:15# %>
如果不想使用 Response 对象设置过期时间,可以将 <META> 标记写入 HTML,通常写在 HTML 文件的 <HEAD> 内部。一些浏览器会响应这条指令,但代理不会。
<META HTTP-EQUIV="Expires" VALUE="May 31,2001 13:30:15">
最后,可以标识内容对 HTTP 代理缓存是否有效,请使用
Response.CacheControl
属性。设置属性为"Public",允许代理缓存内容。
<% Response.CacheControl = "Public" %>
默认情况下,该属性设置为"Private"。注意,不应当为显示某用户专用数据的页启用代理缓存,因为代理也许为属于其他用户的用户页面服务。
技巧 22:尽可能使用 Server.Transfer 替代 Response.Redirect
Response.Redirect
通知浏览器,请求一个不同的页面。该函数经常用于重定向用户到登录或错误页面。既然重定向强制一个新页请求,浏览器就必须做两次到 Web 服务器的往返,而且 Web 服务器必须处理额外的请求。IIS 5.0 引入一个新的函数,
Server.Transfer
,该函数执行传送到相同服务器上的不同 ASP 页。这样避免了额外的、从浏览器到 Web 服务器的往返,从而改善了整体系统性能,同时改善了对用户的响应时间。请查看重定向中的新方向(英文),它讨论了
Server.Transfer
和
Server.Execute
。
也可以查看Leveraging ASP in IIS 5.0中有关 IIS 5.0 和 ASP 3.0 新功能的完全列表。(英文)
技巧 23:在目录 URL 尾部加斜线
相关的技巧是,一定要定在指向目录的 URL 尾部加斜线
(/)
。如果省略了斜线,浏览器将向服务器提出请求,仅通知它正寻找一个目录。然后浏览器发出第二个请求,在 URL 末尾添加斜线,然后服务器将那个目录的默认文档作为响应,或者如果没有默认文档并且目录浏览已被启用,就以目录列表作为响应。添加了斜线便省去了第一个没用的往返。出于对用户的友好,也许想要在显示的名称的末尾省略斜线。