技术开发 频道

网站性能调校-Cache的使用

  Authenticated Cacheability对网站性能的影响

  在这个开源系统的性能设置里,还有一个Authenticated Cacheability的设置:

image

  什么是 Authenticated Cacheability

  Cache可以应用在服务器端,也可以使用在客户端,客户端对于访问的网页都会进行缓存,但出于某种原因,你也可以指定客户端不缓存你的网页。

  当 Web 服务器发送响应时,在它传递的所有信息中包括一个 Cache-Control HTTP 标头,该标头定义可在其上缓存文档的设备。ASP.NET 在 HttpCacheability 枚举中定义这些值。该枚举具有六个值,其中四个值直接映射为 Cache-Control HTTP 标头设置,另外两个特殊值分别为 HttpCacheability.ServerAndPrivateHttpCacheability.ServerAndNoCacheServerAndPrivate 只允许将响应缓存在原服务器和请求客户端上。而 ServerAndNoCache 只允许将响应缓存在原服务器上。

  这些设置当然会影响到你网站的性能,相对于做了缓存的页面,没有缓存的页面需要花更多的时间来显示。

  这个开源系统利用了这一点,你可以自己选择客户端缓存的方式,有几个选项还会影响到服务器端的缓存。下面是关键的代码:

If Request.IsAuthenticated = True Then
                
' set client side page caching for authenticated users
                If Convert.ToString(PortalSettings.HostSettings("AuthenticatedCacheability")) <> "" Then
                    Select Case Convert.ToString(PortalSettings.HostSettings(
"AuthenticatedCacheability"))
                        Case
"0" : Response.Cache.SetCacheability(HttpCacheability.NoCache)
                        Case
"1" : Response.Cache.SetCacheability(HttpCacheability.Private)
                        Case
"2" : Response.Cache.SetCacheability(HttpCacheability.Public)
                        Case
"3" : Response.Cache.SetCacheability(HttpCacheability.Server)
                        Case
"4" : Response.Cache.SetCacheability(HttpCacheability.ServerAndNoCache)
                        Case
"5" : Response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate)
                    End Select
                Else
                    Response.Cache.SetCacheability(HttpCacheability.ServerAndNoCache)
                End If
            End If

  对于HttpCacheability的几个值代表的意义如下:

  • NoCache:设置 Cache-Control: no-cache 标头。如果没有字段名,则指令应用于整个请求,且在满足请求前,共享(代理服务器)缓存必须对原始 Web 服务器强制执行成功的重新验证。如果有字段名,则指令仅应用于命名字段;响应的其余部分可能由共享缓存提供。
  • Private: 默认值。设置 Cache-Control: private 以指定响应只能缓存在客户端,而不能由共享(代理服务器)缓存进行缓存。
  • Server: 指定响应仅缓存在源服务器上。与 NoCache 选项相似。客户机接收 Cache-Control: no-cache 指令,但文档是在原始服务器上缓存的。等效于 ServerAndNoCache。
  • ServerAndNoCache: 应用 Server 和 NoCache 的设置指示在服务器上缓存内容,而对服务器以外的其他对象都显式否定其缓存响应的能力。
  • Public: 设置 Cache-Control: public 以指定响应能由客户端和共享(代理)缓存进行缓存。
  • ServerAndPrivate: 指示响应只能在服务器和客户端缓存。代理服务器不能缓存响应。

  如何设置Authenticated Cacheability

  对于很多网站,内容的保密性要求并不高,所以推荐设置为"Public”,这样能取得最大的性能优势。

0
相关文章