站点结构

ASP.NET 缓存 Spurs 性能和可伸缩性

Iqbal Khan

 

一眼:

  • 瓶颈显著降低
  • 静态和动态 Web 缓存
  • 必须具有的功能: 过期,多数据库 PDF 的部分内容的相关性
  • 全局组织的特殊的优点
  • Web 缓存服务器群集
  • 可用和商业解决方案

此问题: ASP.NET 瓶颈
解决方案: Web 高速缓存
在 Web 缓存中必须具有的功能
过期时间
重新加载页面过期
部分页面缓存
数据库相关性
文件依赖项
PDF 部分内容
ViewState 缓存
Gzip 压缩
可伸缩性和动态 Web 缓存群集
缓存的地理分布
从数据库中保持
指南

基于 ASP.NET,Microsoft 的 Web 应用程序框架,应用程序进行更大 inroads 到企业。 一次继续提示 IT 专业人员调用为了提高的性能和可伸缩性瓶颈产生的增长用户和交易记录。

此问题: ASP.NET 瓶颈

瓶颈可能发生在 ASP.NET 应用程序的原因有多种。 最显而易见的: 数据存储技术没有为可伸缩作为 Web 应用程序体系结构。 您试图扩展您的应用程序时,立即处理数据存储或数据访问的 ASP.NET 应用程序中的任何位置将变为一个 logjam。 在这种情况的两个区域是关系或大型数据库中的会话状态存储和应用程序数据 (请参见 图 1 )。

fig01.gif

图 1 公共区域的性能瓶颈在 ASP.NET 应用程序。

另一个瓶颈如果发生在 ASP.NET 应用程序正在进行的面向服务的调用 Web 服务的体系结构 (SOA)。 此处,因为 Web 服务具有相同的问题与 ASP.NET 应用程序 (即,数据存储和访问) 中,将发生在降低。 很可能的 Web 服务的服务器场的共享跨多个应用程序并且因此,压力的更多个任何一个的 ASP.NET 应用程序,创建可伸缩性瓶颈。

用户的浏览器和 Web 服务器场之间也可能出现瓶颈。 这些 clogs 与 ASP.NET 页必须在涉及大量占用 CPU 的处理时间重复执行这一事实。 此过程还包括向用户发送大量的数据元素 (图像、 文档等),又一次。

在前一个 TechNet 杂志 》 文章,我讨论了 ASP.NET 性能和可伸缩性问题侧重于会话状态和应用程序数据 (请参见" 为 ASP.NET 应用程序中提供可伸缩性"6 月 2009年)。 该本文我介绍了这些问题发生的方式,包括原因 ASP.NET 会话状态将成为一个 logjam 随着 Web 场。 我讨论过这一事实若要一个更好的备选方法分布式的内存中缓存的现有的 ASP.NET 会话状态存储选项。 我将介绍如何来自数据库的应用程序数据可能会导致可伸缩性瓶颈。 我还详细如何分布式缓存解析这些 ASP.NET 会话状态存储瓶颈,不同的缓存拓扑每个提供不同的功能,但所有地址的可伸缩性,并确保 100%的正常运行的帮助。

最后,我一般情况下分析不同分布式缓存在市场上可用的选项。 一些选项可用具有有限的功能,其他人时更可靠且功能丰富商业产品。 但是,为最佳性能和可伸缩性,很谨慎考虑顶部的-在-行商业产品。

解决方案: Web 高速缓存

该问题定义作为背景,本文的主要焦点是性能和用户的浏览器和 Web 服务器或 Web 场之间的可伸缩性瓶颈。 理想情况下,您希望减小 Web 页本身执行的次数。 如果网页一次,执行,并且其输出不更改甚至简要然后为什么它再次执行? 为什么不只是缓存输出? 然后在下一次用户可以只获取该页的输出直接从高速缓存,而不是重新执行它。 重新执行页涉及 CPU 消耗内存,使用其他 Web 服务器的资源 — 还有然后,当然,从数据存储在可伸缩性瓶颈问题。

可以在 Web 服务器本身上缓存 ASP.NET 页的输出 ; Microsoft 提供 ASP.NET 输出缓存机制,允许您执行此操作,以及很好地工作。 但是,我没有两个问题有关 ASP.NET 输出缓存。

第一次,它要求您更改您的 ASP.NET 代码,并在至少置于标记以指示您要缓存其输出这些页。 这并不总是可能的 IT 人员为管理外部购买的 ASP.NET 应用程序和内部开发的。 此外,随时更改您的应用程序代码,您必须要通过质量保证措施以确保任何可能中断过程中。 这会增加成本的合并缓存。

第二个,ASP.NET 输出缓存缓存页输出本地每个 Web 服务器和,实际上内每个 ASP.NET 工作进程,。 这将创建在一致性和可伸缩性方面的主要问题如果您的网络园 (意味着 Web 服务器上的多个工作进程) 或负载平衡 Web 场。 在这些情况下,您拥有多个的断开连接的副本,缓存的 ; 高通信网站,这可能成为一个管理任务。 在 ASP.NET 4.0,Microsoft 期望的可扩展的缓存框架,将使您可以通过合并第三方分布式的缓存在一个单独的进程或层中保留缓存。

在中的此开发,我希望缓存页输出不在 Web 服务器但在一个单独的 Web 缓存服务器位于用户和网站之间的场 (种喜欢反向代理服务器 ; 请参见 图 2 )。 如果用户请求大量不它对 Web 场进行之间提供从缓存而,您正在减少您的 Web 场上的负载并增加 Web 场的可伸缩性。 获取从缓存的 Web 页的输出,并返回该用户需要较少的资源比实际执行该网页。 这是因为缓存是一个高性能和可伸缩性在内存中的存储,与不同的任何磁盘存储可以具有的性能和可伸缩性方面的问题。

fig02.gif

图 2 Web 缓存服务器在中间用户和 Web 服务器。

在这种情况中,我将讨论如何缓存网页的输出可以解决瓶颈和显著提高可伸缩性和性能。 Web 缓存服务器可以发挥重要作用中实现这些目标。

Web 缓存服务器截获用户使 Web 页和检查以查看这些网页的输出是否已经存在在缓存中的 HTTP 请求。 如果,Web 缓存服务器将返回的输出到用户。 用户请求甚至永远不会使得在 Web 服务器。 由于它的被从缓存中提取,则返回是速度非常快。 因为在内存中的页没有被 re-executed,以及保存大量的 CPU 处理。

Web 缓存服务器可以使用任何后端 Web 技术平台。 只要它们的所有 talking HTML 和 JavaScript,无论是否开发 Java、.NET、 PHP 或一些其他语言中的 Web 应用程序。 但是,Web 缓存服务器可以包括一些的特定于平台的功能,因此功能有所不同解决方案解决方案。

有两个类型的 Web 缓存解决方案。 一个主要缓存意味着每一页缓存假设的相当静态的数据完全是静态或可预测的时间间隔的更改。 一定数量的过期和从缓存中移除的时间的被缓存整个页。 其他类型的动态缓存是它是更适用于动态网站或 Web 应用程序。

如果网站或 Web 应用程序的数据更改频繁和 unpredictably 动态,然后您应选择动态缓存。 这些天,大多数网站都更改至少某些经常其内容。 您应该能够缓存内容的少为 15 到 30 秒,但通常的任意位置从几分钟到几个小时的时间,在几天甚至周的某些情况下。

Web 缓存到大型全球的公司提供一个重要好处: 能够地理位置将 Web 缓存服务器。 在全局的单位主网站应用程序可能承载在纽约,但用户世界各地,旧金山和伦敦和东京和悉尼和迪拜中。 现在很容易相对有地理位置位于每个方面的 Web 缓存服务器。 它们命中您的网站之前,来自欧洲的所有请求都将都经过欧洲的 Web 缓存服务器。 这样,它们不需要跨大西洋海上在出现的每个数据包经过的 100 毫秒延迟。 它们可以基本上获得它的一个副本。 附近高速缓存

让我们看另一个示例。 您将有迪拜在服务器服务于该中东和亚洲地区,并且您有几十万个用户同时命中您的网站。 Web 缓存,将显著放到您的主数据中心在纽约的通信。 并非所有通信被都停止,因为您不缓存的所有内容,并且您缓存的任何还从中删除缓存失效) 的时间。 但具体取决于您的应用程序性质您已经可能减少通信 30 到 50 %。

在 Web 缓存中必须具有的功能

随着时间,网站已转换中只显示静态内容成为完全交互式动态数据经常更改的 Web 应用程序。 该意味着,今天,Web 缓存动态网站的所有要求必须满足都需要。 目标是网站的缓存尽可能多的内容藉彲鑳藉时同时确保正确和不过期或出非同步与基础数据在数据库中的缓存的内容。 若要处理所有的 Web 缓存需要某些功能来提高性能和可伸缩性时避免数据完整性问题。

一个典型的 Web 缓存解决方案包括以下功能。

过期时间

过期功能可以指定规则有关的 Web 页缓存和如何多长时间。 并且它允许您绝对的或可变的时间过期网页。 绝对时间意味着您打算在特定时间过期内容是否是今天或 10 分钟 (从现在的午夜。 滑动时间取决于是否经常正在访问某些页。 如果页未被访问如果它不使用所有您可能希望其过期。 空闲时间将过期网页 (如果它不会获得用于一定的时间超过 — 渚嬪的方式  10 或 20 分钟。

绝对的时间过期可能是过期的最重要的网页时间。 Web 缓存产品可以指定规则,并选择要缓存的 URL 模式 (称为"URI")。 Web 缓存允许您指定的某些 URL 永远不会缓存。 它允许您指定某些类型的 URL 缓存的一个特定长度的时间。

它还应允许您指定何时过期各种基于 HTTP 标头中提供 URL 输出所附带的信息的 URL。 每一页的 HTTP 标头可以包含有关长它可以被缓存,信息的时间过期它及它时最后一次更改。 这些是高速缓存可以检查监视是否已更改页的内容,以及是否需要上载到缓存中的新内容的 Web 项。 此功能,而您没有一种用于使和删除陈旧数据的方式。

重新加载页面过期

另一个重要功能能够重新自动加载页面后由于任何原因是否由于到绝对的或空闲时间过期。 例如,您可能会说:"该页面是好的下一个 20 分钟。 后 20 分钟,Web 缓存自动 re-fetches 网页以使其始终具有最新的副本。

这种方式,您不要等待下一个请求来自用户的页。 这是因为请求时,您不希望用户通过 Web 场从重新提取该页面的延迟。 因为您可以获取其在背景中,可能需要您获取它从 Web 服务器的第一次执行的 5 到 10 秒。 但是,很好,因为用户获取它时,您可以将其返回 sub-second 的响应时间根据如何远离用户。

部分页面缓存

某些浏览器中显示的网页包含多个项目每个有其自己的 URL。 因此要呈现页的 Web 浏览器必须在调用多个 URL。 这达到相同的结果为部分页,但它不称为"部分的页"因为服务器侧的每个 URL 都表示一个单独一页,并且每个页面缓存独立地在不同持续时间取决于其内容的性质。

其他的情况下在单个 Web 页开发如其内容的方式划分为节。 某些部分是静态的并不更改 ; 某些部分动态,使用不同的时间间隔后更改每个部分。 在起的方式作用部分页缓存的缓存页部分基于无论它们是静态或动态和长它们应缓存,而不只缓存整个页面。

ASP.NET 允许您执行部分页面缓存通过两种方法: 控件缓存和缓存后替换。 两者都要求您修改要执行此缓存特定的 ASP.NET 页面。 不可能如果您不有自己开发的资源,并且您没有开发内部此 ASP.NET 应用程序。 但是,部分页缓存在 ASP.NET 中的每个类型的说明如下。

您可以执行部分页缓存在 ASP.NET 中创建用户控件来包含缓存的内容和标记用户控件"缓存。 这允许您为用户控件中缓存页的某些部分,使页面 re-executed 时, 这些部分只需从缓存中提取不 re-executed。 只部分的页,不能指定为用户控件未标记"缓存 re-executed"

使用缓存后替换,缓存页,,但某些部分或片段在其内部标记"动态"或"不可缓存。 然后,re-executed 此页时只有动态的或不可缓存部分实际执行。 页的其余部分获取从缓存的并返回页的输出缓存和动态部分组合在一起。

有趣的是,部分页面缓存可以只执行 Web 服务器上。 由于这个原因一些编程是必需的。 在 ASP.NET 的情况下部分页面缓存通过编程来确定 ASP.NET 页中,而哪些不是 — 到缓存。 但此缓存 Web 服务器本身执行,并且仍然至少执行在 ASP.NET 页的部分。

在 ASP.NET 中,部分页面缓存实现基于 Microsoft 的规范,而 Java 平台,产生一个部分页缓存标准被称为边缘服务包括 (ESI) 具有。 ESI 定义它的内容传递网络、 最终用户的浏览器或 Web 缓存服务器充当反向代理用户的浏览器和 Web 服务器之间是否定义了缓存和非缓存网页的组件可聚合、 组合和网络边缘传递的简单的基于 XML 的标记语言。

因此,部分页面缓存非常特定于平台的),当然,ASP.NET,您必须使用 Microsoft 的方法。

数据库相关性

另一个键的功能是允许页输出到相应时从缓存无效数据库依赖关系数据库中的数据。 网页的输出通常是基于数据库中的数据生成的。 它们描述的数据来自一个或多个行中一个或多个数据库表。 因此,如果更改了这些行,然后这些页必须删除从高速缓存。 由于这个原因数据库同步功能很重要。 这意味着数据更改在数据库中时, 这些页的输出应无效并且应该从缓存中删除。 此功能使您可以自动确定应从缓存中删除特定的页面。

创建此依赖项的一个方法是通过指定"选择"SQL 语句 (或包含一个选择语句存储的过程调用) 然后映射的某些页面 GET/POST 参数与在 SQL 语句中的参数对应到问题中,页。 在运行时 Web 页参数用于执行 SQL 语句,并对 2008 年 SQL Server 2005 日 Oracle 10 g R2 或更高版本的数据库创建一个 SqlCacheDependency。 然后,当在数据库的更改相应的行,在数据库服务器触发时的捕获由 Web 缓存服务器在.NET 事件。 然后在相应的 Web 页输出从缓存中移除 (请参见 图 3 )。

fig03.gif

图 3 页面从 Web 缓存,如果数据库 行的更改。

文件依赖项

另一个键的功能是文件依赖项。 可能将一个页输出与文件关联在系统中的说明:"如果该文件会被更新或删除,请无效此页。" 然后 Web 缓存监视被保存在共享文件夹中的该文件。 如果该文件是更新或删除,Web 缓存自动使高速缓存中相应的 URL 无效。 这使您更新的文件从任意位置在您的系统中是否另一个应用程序或甚至在一些相关的数据更改时根据该数据库服务器触发它涉及。 渚嬪的方式  如果存储在您的数据而不存储在大型机上在 2008 年 SQL 2005 月或 Oracle 数据库中,您可以使用文件依赖项,其使缓存页。

所有可以通知缓存时使如果某些事情发生在数据存储区或您的环境中通过 Web 缓存不能直接访问的。

PDF 部分内容

现在,很多人访问联机 PDF 文件。 常见的使用模式是它们读取一页一次通过整个 PDF 文件的页。 少数人下载的整个 PDF 和本地读取它 ; 大多数在浏览器中阅读它。 它们通过这种方式查看信息时, 它们通常不阅读整篇文档 ; 它们后获取它的某些部分通过放弃它。

因此提供整个 PDF 很浪费资源 ; 实际上可以区分之间可以接受和不可接受的性能,高峰系数。 由于这个原因 PDF 部分内容处理功能很重要 Web 高速缓存中。 它降低了带宽的负载在 Web 服务器上,并可以提高总体可伸缩性。

ViewState 缓存

在 ASP.NET 中最重要功能是声明在服务器上运行和 post-back 到同一页的控件。 结束之前将 ASP.NET,在传统的 ASP 中最多创建多个页处理不同的操作,在逻辑上,属于一页渚嬪的方式  加载数据、 将数据保存或执行其他操作。 但是在 ASP.NET 中,您不再需要执行此操作。 窗体域和其他控件可以现在被声明在服务器上运行,并且服务器只需将页发送回给本身。

若要处理这些 post-backs,一个 ViewState 创建了记住控件和动态信息分配给这些控件的标识。 在实质的方式上 ViewState 跨多个张贴内容中保留的页的控件的状态。

ViewState 对于非常重要的 ASP.NET 应用程序。 实质上是,它的信息,以便在浏览器可以发送相同的信息回发到服务器下一次用户由 Web 服务器发送到浏览器会在同一页的张贴内容。

渚嬪的方式 ,您可能会加载客户在 customer.aspx 页上。 客户数据中进行一些更改然后单击"保存。 保存按钮再次调用 customer.aspx,但也会发送该 ViewState,以便在 customer.aspx 知道如何处理该回发。 在 ViewState 包含的信息 customer.aspx 已发送到该的浏览器在回发包含新的用户可能已修改数据。 允许的 customer.aspx 以确定更改的内容和有关该操作。 这只是一个简单示例 ; ViewState 还可以包含其他动态创建的数据,每个控件在页上。

虽然 ViewState 非常有用,在 ASP.NET 中但它还执行传输的数据和后退从 Web 服务器到用户的浏览器的成本。 此成本可能有一个性能和可伸缩性的影响的应用程序和用户时从 Web 服务器目前和跨 Internet 连接速度较慢的高峰负载期间。

但在 ViewState 通常不必旅行一直到浏览器,如果它可以被缓存在 Web 缓存中。 在该的情况下只是一个标记或一个唯一的 ID 可能被发送到浏览器,以便一个 ViewState 和提供其返回到 Web 服务器基于唯一的 ID。 如果浏览器返回,Web 缓存将重新插入 所有站点要求服务器都是浏览器发送该的请求下一次它包含从上一次该 ViewState。 是否在 ViewState 到达浏览器,因为浏览器将永远不会使用该信息并不重要只在 Web 服务器不会。

用技术的术语是 ViewState 用于回发,以便如果您曾经 post-backs,您将需要一个 ViewState,和 Web 高速缓存可以缓存一 ViewState。 因为一个 ViewState 可能只需几次千字节大小的还可以节省大量的带宽。

Gzip 压缩

这些天,大多数浏览器可以解压缩 GZip 压缩的内容。 但不是所有的 Web 服务器被配置为自动压缩的 Web 页的输出。 即使在已压缩,它会占用大量不必要的 CPU 高通信量已经压力每个 Web 服务器上。 但是,如果压缩通过一个中间代理服务器 Web 缓存服务器,它将成为更具可伸缩性。

它容易压缩永远不会更改的静态数据。 但是,是动态的 ASP.NET 应用程序中的大多数页,并且如果页输出不更改每次应只压缩其内容。 否则,压缩会使可能 dwarfing 所获得的带宽使用情况的在 CPU 上的一个不合理的负载。 但是,因为 Web 高速缓存已经找出有关智能的动态页面输出缓存 (意味着至少一个简短的时间内不会更改的),它也是能够自动压缩的高速缓存页的任何。 然后这些缓存的页提供给客户机多次压缩的窗体中并显著减少带宽使用情况。

一个典型的 gzip 压缩减少内容几乎是 80%除非已压缩的内容 (例如,PDF,JPEG,TIFF,等)。。 一个好的 Web 缓存应允许用户以指定要压缩的 URL,并且要忽略的压缩。

可伸缩性和动态 Web 缓存群集

Web 高速缓存是一个位于前面的 (几乎类似的设备) 的 Web 场中的服务器。 目前,Web 场可以从两个服务器增长到 100-plus 负载平衡器服务器。 因此,单个 Web 缓存服务器不能处理不断增加的网络场的负载。 一个很好的经验是对于服务器场中每个五个 Web 服务器,您应 Web 缓存服务器。

有多个 Web 缓存服务器不只可提高可伸缩性,但还允许进行复制,以便如果任何一个服务器出现故障或执行向下,缓存不丢失和还有没有性能下降 (请参见 Web 缓存 图 4 ).

fig04.gif

图 4 动态的 Web 缓存群集 (添加或删除服务器在运行时)

一个好的 Web 缓存服务器应该能够生成 Web 缓存服务器,来处理通过复制的可靠性和通过多个服务器的可伸缩性的群集。 但是,许多 Web 缓存服务器涉及到其仍视为一个逻辑 Web 缓存。 即使有高速缓存在群集中的多个副本,他们是始终保持同步。 在短,有 Web 缓存服务器的群集使您能够同时保持缓存的逻辑正确性缩放。

后一个缓存群集很好的 Web 缓存应允许您指定不同存储缓存的选项,也称为缓存拓扑。 主要的拓扑包括复制的缓存、 分区缓存和客户端缓存。

复制整个缓存被复制到群集中每个缓存的服务器的缓存方法。 鍥犳  每个缓存服务器有整个缓存。 所有的"获取"操作将始终是本地的框,并缁撴灉是速度非常快。 但是,多个的高速缓存服务器进行更新,并且如果群集中有两个以上服务器,然后更新成本增加。

而在另一方面,分区缓存上中断 (或分区) 高速缓存的每个分区存储在不同的缓存服务器。 分区数目等于的高速缓存服务器的数目。 这允许您通过添加更多不能执行该操作在复制的缓存中高速缓存服务器增加高速缓存存储容量。 此外可以使用分区缓存不同的缓存服务器上创建的每个分区的备份,这样任何这些服务器停机,如果您不丢失缓存。 分区缓存是最可伸缩缓存每秒的交易记录和存储拓扑结构。

最后,客户端缓存是结合使用分区或复制的缓存 (尤其是如果实际缓存 Web 缓存服务器以外的其他服务器上承载) 的拓扑结构。 客户端缓存使高速缓存在客户端进程中的一小部分,使经常使用的数据始终可用关闭的。 什么保存在客户端缓存,取决于最近提取内容的客户端。 您可以指定最大大小为客户端缓存时的大小达到,它启动退出 (或删除) 留出空间的旧项目以便为新的。 这种方式,客户端缓存永远不会占用更多的内存比您确定哪些可行。

如果使用多个 Web 缓存服务器而不生成缓存群集,您将得到与缓存的多个断开连接的副本。 如果您的网站是相当静态,但动态网站和 ASP.NET 应用程序中,可能会导致数据完整性问题,可能可以接受的结果。 此外,您将得到即使另一个 Web 缓存服务器缓存中, 有此页的输出发送到 Web 服务器的用户请求从而提高 Web 场负载。

缓存的地理分布

许多 ASP.NET 应用程序网站现在具有用户全球即使网站本身位于在一个位置。 通常,很可能可以位于多个地理位置因复杂性和成本的基础结构的网站的。 渚嬪的方式  的 Web 场也中相同位置中有一个数据库服务器的 ; 它们涉及高事务处理应用程序时,将数据库服务器不理想的地理分布通常选择。 鍥犳  最终用户遇到性能降低的广域网络 (WAN) 延迟。

解决该问题的一个方法是将 Web 缓存服务器放在每个的地理位置然后从该区域通过最接近的 Web 缓存服务器路由的所有通信 (请参见 图 5 )。 然后,如果 Web 缓存服务器不具有页已缓存,它直接请求发送到主数据中心,另一组 Web 缓存服务器所在的位置。

fig05.gif

图 5 Web 缓存服务器在地理位置分布 环境。

因此好的 Web 缓存应该能够创建层次结构的服务器,以便每个 Web 缓存知道要传送该的请求,即使它不会缓存页。

从数据库中保持

如我六月 2009年的文章所述的数据不会更改每次 ; 它保持不变。 遗憾的,不分布式缓存的情况下您将通过反复重现该相同的数据不必要的周期。 但您不必转到该数据库所有时间。 它是相同的数据,所以为什么转那里吗? 为什么不将其从缓存?

下面是示例突出显示此问题。 航空公司的网站主页不更改太多 ; 它可以被缓存了很长时间。 要搜索的航班的客户访问。 因为其他用户预订座位,信息发生变化后端,不断移动信息。

如果客户为说,一个飞行从纽约到旧金山,搜索客户可用性确定结果。 客户可用性基于已预定,与预订不断发生的用户数。 使变得一个 harried 的 businessperson 可能复杂问题输入不正确的信息,或使以确保某个客户分配多个条目。

用户将收到表明一个特定的飞行可用,在缓存中更改每隔五分钟的信息的结果。 但一旦客户实际要保留一个客户,则实时检查执行数据库中。 这是因为的检查航班的可用性可能仅大约 10 实际上使保留每个 1,000 人。 即使提供该信息可能不完全正确,它是可以显示所有这些访问者,楼梯段的可用性。 在这样的情况下可以缓存该页面,即使它是高度动态。

但您可以将它缓存的想法,它是可接受提供一些风险的信息它并不完全准确。 然而,在数据库保留页是确保所有信息准确并保持最新的关键。 在这里是每个应用程序具有公共可被缓存的信息和网站的用户不必每次都被发送到航空公司的数据库。

如果希望将缓存的全部图像,则将最简单的阶段。 您不会更改您公司的徽标或您总裁的图片或标准了供人阅读的文档。 但是,然后在更加动态的其他部分。 这其中您可以指定规则和说,渚嬪的方式 "我需要缓存此长时间的此页。

您可能会说与其他网页,"我不能告诉长它将在高速缓存因此我希望将它绑定到数据库。 如果将更改此行,在此表中的希望此页面将失效"。 这意味着从缓存中移除重新加载,创建新副本。 每个页面类别是不同的。 只要 Web 缓存允许您确定要如何缓存页,正在创建一种情况下在其中您缓存的越多,请转到 Web 场越小。

指南

在大多数情况下,您可以通过部署 Web 缓存中获得显著的好处。 如果您仅有一台 Web 服务器,很您没有足够的通信体验这些类型的问题。 但如果您将获得 1,000 或更多的用户,您可能已经有负载平衡 Web 场。 在这种情况下您一个候选的探索优化性能和可伸缩性的方法。

提前计划。 不要将等待原因是它们执行,您就会在 panic 模式下的问题。 您不会面临任何重大问题时,最佳时间,但是在该点必须能够诱使顶部管理有关为什么需要这样的项目的资金。 实现该目标的一个好的方法: 向管理什么它可能成本业务如果您的网站提供了在高峰时段 (upward 的单击 30 到 60 秒) 的煎熬较慢的响应时间。 并且如果您的网站进入下 30 到 60 分钟吗? 考虑这些问题可以帮助诱使您的组织的主管人员需要一个 Web 缓存有关。

作为以前著名,免费和商业 Web 缓存选项都可用。 使用 ASP.NET 的日益普及,开发人员之间,现在新兴专业支持.NET 的 Web 缓存的选项。 然而,在撰写本文大多数 Web 缓存产品支持 Java 和 PHP。 大多数基于软件的但一些硬件设备的选项也可用。

您考虑您的选择,保持侧重于您的组织和网站。 如何动态是网站? 您是否有多少用户? 多少缓存将真正帮助您?

然后,请考虑需要哪些缓存功能。 我们已经讨论过缓存使速度快速和可伸缩性的交易记录。 但有时,它可以使用户过时的信息。 您考虑各种解决方案,请记住该余额。

Iqbal Khan 总经理和技术 Evangelist 的 Alachisoft. Alachisoft 提供 NWebCache,这是一个前导 Web 缓存提升性能和可伸缩性。 Iqbal 收到一个 M.S. Bloomington,印地安那州澶 у  从计算机科学中的 1990年的程度。 您可以与他在 iqbal@alachisoft.com.