数据识别服务器控件将提供其他功能,例如支持对显示的数据进行分页或内联编辑。有关详细信息和示例,请参阅 Data Binding Server Controls。
数据缓存和页面缓存
对经常访问的数据进行缓存可以显著缩短站点的响应时间,因为不需要等待数据库查询便可进行页面处理。而缓存由页面请求生成的 HTML 可以进一步缩短响应时间,因为根本就无需处理缓存的页面。这两种环境均支持上述两种缓存策略,但与 PHP 相比,ASP.NET 提供了更多用于缓存和管理数据的方法,从而使开发人员可以针对自己应用程序的性能需要选择相应的方法和策略。
页面缓存
缓存某个页面请求的 HTML 输出是减少 Web 应用程序的负载的一种常用方法。PHP 本身不支持页面缓存,但是可以通过编程的方式或下载第三方软件包来执行此操作。通常可以在服务器上通过多种方法执行页面缓存,这些方法可用于缓存编译的代码,直至将页面输出写出到一个单独的文件中(该文件将随代码的更新而更新)。
在 ASP.NET 中,可以通过低级别的 OutputCache API 或高级别的 @ OutputCache 指令来执行页面缓存。启用输出缓存后,将在对页面进行第一个 GET 请求时创建输出缓存条目。后续的 GET 或 HEAD 请求将由输出缓存条目支持,直到缓存的请求过期。
输出缓存将检查页面的过期策略和验证策略。如果页面位于输出缓存中并标记了过期策略(指示该页面自缓存时开始 60 分钟后过期),则 60 分钟后,该页面将从输出缓存中删除。如果在过期后收到另一个请求,将执行页面代码并再次缓存该页面。这种过期策略称为绝对过期,即页面在某个时间之前有效。
除了对整个页面进行输出缓存外,ASP.NET 还提供了一个简单方法,使您可以只缓存页面的特定部分。这种方法称为拆分缓存。您可以使用用户控件 (User Control) 来指定页面区域,并使用前面介绍的 @ OutputCache 指令将这些区域标记为缓存区域。该指令指定了用户控件的输出内容在服务器上缓存的时间(以秒为单位)以及影响这一时间的任何可选条件。
有关 ASP.NET 的输出缓存的详细信息,请参阅 Caching ASP.NET Pages。
数据缓存
在 PHP 中,可以通过多种方法以编程方式将查询结果缓存到环境中,但 PHP 本身并未提供这种方法。在 PHP 中,可以创建数据缓存类或系统。对于少量信息,只需使用 Session 变量和/或 Cookie;对于大量或复杂的信息,可以创建您自己的数据缓存类。但问题是,当处理包含很多类型的复杂数据时,这种方法的效率会很低且容易出错,在一定程度上会加大编程的难度。
ASP.NET 通过 Page.Cache 对象提供了一个系统范围的数据缓存方法,可用于数据集 (DataSet)、数组、集合、XML 对象等。对于需要更复杂功能的应用程序,ASP.NET 缓存还支持三种特定类型的缓存:过期、清理以及文件和关键项相关性。
- 过期类型的缓存使开发人员可以控制缓存项目的过期时间。可以将该时间定义为特定的时间(例如 01:00),也可以将其定义为相对于上次使用项目时的时间,例如自上次访问该项目时开始 20 分钟后过期。过期后的项目将从缓存中删除,以后再试图检索该项目时,将返回空值(除非再次将其插入到缓存中)。
- 清理类型的缓存会在内存不足时尝试删除不经常使用或不重要的项目。开发人员可以控制清理的执行方式,并且可以在将项目插入到缓存中时向清理程序提供提示,以指示创建该项目的相对系统开销以及为使该项目有效而必须对其进行访问的相对频率。
- 文件和关键项相关性类型的缓存将基于某个外部文件或另一个缓存项目确定该缓存项目的有效性。如果相关项发生变化,缓存项目将失效并从缓存中删除。例如,假设您有一个较大的需要定期更新并下载给员工的报告,则可以在应用程序中使用此功能。应用程序处理文件和报告中的数据,然后缓存该数据并插入对该数据的来源文件(从该文件读取数据)的相关性。当该文件更新时,数据将从缓存中删除,应用程序可以重新读取它并重新插入更新的数据副本。
ASP.NET 数据缓存为编程人员提供了许多不同的方法来管理应用程序并提高应用程序的响应速度和效率。有关详细信息,请参阅 Cache Class 文档以了解 Cache 对象。
发送电子邮件
PHP 和 ASP.NET 都为以编程方式发送电子邮件提供了内置的支持。要在此示例中使用 ASP.NET 发送电子邮件,您需要设置 IIS SMTP 服务。因为 .NET 中的内置邮件对象依赖于该服务包含的对象,所以您必须安装它。尽管如此,与 PHP 一样,.NET 也允许您使用任何 SMTP 服务器或邮件服务器。表 14 对这两种环境的基本语法进行了比较。
表 14:发送电子邮件



