Understanding the Forms Cache
窗体缓存是位于计算机硬盘上的文件夹,存储标准 Microsoft Outlook 窗体的本地副本。 窗体缓存不缓存窗体区域,因为这些窗体内容已经存储在计算机硬盘上。
窗体缓存缩短了窗体的加载时间,因为常用窗体从硬盘上加载,而不是从服务器下载。 当窗体首次激活时,窗体定义文件将从其窗体库复制到窗体文件夹。 窗体缓存在某个子文件夹中保留窗体定义的临时副本。 此子文件夹的名称与窗体名称大致相同。
窗体表 Frmcache.dat 也位于“窗体”文件夹下,并用于查找窗体和防止将同一窗体的多个实例载入缓存。 激活窗体时,Outlook 将检查具有相同邮件类的窗体是否已经位于缓存中。 如果没有,它将把窗体定义复制到缓存中。 此外,如果窗体发生更改,Outlook 会将新的窗体定义复制到缓存中。
自 Microsoft Office Outlook 2007 之后,Outlook 按下面的顺序查找窗体。 一旦找到匹配的窗体,Outlook 将其打开,并且不再继续搜索。
- 缓存在内存中的窗体。 如果已有使用相同窗体的另一个项目打开,那么 Outlook 在内存中已经有了该窗体,并且使用该副本,而不是重新加载窗体。
- 已经缓存在本地磁盘驱动器上的窗体缓存内的窗体。
- 已发布在当前选中的文件夹中的窗体。
- 个人窗体库中的窗体。
- 企业窗体库中的窗体。
- 应用程序窗体库中的标准 Outlook 窗体,如便签、公告和联系人。
注意
[!注释] 在 Outlook 查找自定义窗体之前,它先确定是否有窗体区域的邮件类与正在加载的项目的邮件类匹配。 如果存在匹配项,Outlook 将加载该窗体区域。 默认情况下,如果有任何窗体区域的邮件类派生自该项目的邮件类,那么除非这些窗体区域的 exactMessageClass 元素设置为 True,否则 Outlook 还将加载这些窗体区域。 加载相应的窗体区域后,Outlook 继续按照上面指定的顺序查找窗体。 但是,如有任何已加载的窗体区域是 loadLegacyForm 元素设置为 False 的替换窗体区域或全部替换窗体区域,Outlook 将不会继续查找并加载包含自定义窗体页的任何窗体。 有关 exactMessageClass 和 loadLegacyForm 元素的详细信息,请参阅 MSDN 库中的 Outlook 2010 XML 架构参考。
由于 Outlook 将窗体保留在缓存中,因此避免了出现多个同名窗体,或者将同一窗体发布到多个窗体库。 在基于文件夹的解决方案中使用的窗体,应该只在该文件夹中发布。 如果要开发基于邮件窗体的解决方案,可以临时在个人窗体库中发布窗体。 窗体完成后,将其发布到 Microsoft Exchange Server 上的企业窗体库中。 生成该窗体的备份副本,然后将其从个人窗体库中删除。 如果需要将一个窗体发布到多个位置,请确保用最新版本的窗体更新所有窗体库,使窗体库保持最新。
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。