Understanding the Forms Cache

窗体缓存是位于计算机硬盘上的文件夹,存储标准 Microsoft Outlook 窗体的本地副本。 窗体缓存不缓存窗体区域,因为这些窗体内容已经存储在计算机硬盘上。

窗体缓存缩短了窗体的加载时间,因为常用窗体从硬盘上加载,而不是从服务器下载。 当窗体首次激活时,窗体定义文件将从其窗体库复制到窗体文件夹。 窗体缓存在某个子文件夹中保留窗体定义的临时副本。 此子文件夹的名称与窗体名称大致相同。

窗体表 Frmcache.dat 也位于“窗体”文件夹下,并用于查找窗体和防止将同一窗体的多个实例载入缓存。 激活窗体时,Outlook 将检查具有相同邮件类的窗体是否已经位于缓存中。 如果没有,它将把窗体定义复制到缓存中。 此外,如果窗体发生更改,Outlook 会将新的窗体定义复制到缓存中。

自 Microsoft Office Outlook 2007 之后,Outlook 按下面的顺序查找窗体。 一旦找到匹配的窗体,Outlook 将其打开,并且不再继续搜索。

  1. 缓存在内存中的窗体。 如果已有使用相同窗体的另一个项目打开,那么 Outlook 在内存中已经有了该窗体,并且使用该副本,而不是重新加载窗体。
  2. 已经缓存在本地磁盘驱动器上的窗体缓存内的窗体。
  3. 已发布在当前选中的文件夹中的窗体。
  4. 个人窗体库中的窗体。
  5. 企业窗体库中的窗体。
  6. 应用程序窗体库中的标准 Outlook 窗体,如便签、公告和联系人。

注意

[!注释] 在 Outlook 查找自定义窗体之前,它先确定是否有窗体区域的邮件类与正在加载的项目的邮件类匹配。 如果存在匹配项,Outlook 将加载该窗体区域。 默认情况下,如果有任何窗体区域的邮件类派生自该项目的邮件类,那么除非这些窗体区域的 exactMessageClass 元素设置为 True,否则 Outlook 还将加载这些窗体区域。 加载相应的窗体区域后,Outlook 继续按照上面指定的顺序查找窗体。 但是,如有任何已加载的窗体区域是 loadLegacyForm 元素设置为 False 的替换窗体区域或全部替换窗体区域,Outlook 将不会继续查找并加载包含自定义窗体页的任何窗体。 有关 exactMessageClassloadLegacyForm 元素的详细信息,请参阅 MSDN 库中的 Outlook 2010 XML 架构参考。

由于 Outlook 将窗体保留在缓存中,因此避免了出现多个同名窗体,或者将同一窗体发布到多个窗体库。 在基于文件夹的解决方案中使用的窗体,应该只在该文件夹中发布。 如果要开发基于邮件窗体的解决方案,可以临时在个人窗体库中发布窗体。 窗体完成后,将其发布到 Microsoft Exchange Server 上的企业窗体库中。 生成该窗体的备份副本,然后将其从个人窗体库中删除。 如果需要将一个窗体发布到多个位置,请确保用最新版本的窗体更新所有窗体库,使窗体库保持最新。

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。