FTPC 对象缓存

        通过缓存允许应用程序在客户端内存中存储从数据库查询和API调用返回的数据副本。提高了应用程序的性能,因为应用程序将来不需要为请求相同数据的请求重新查询数据库。

        当缓存被禁用时,对对象的每个请求都需要调用数据库。当启用缓存时,客户端检查对象是否在其内存中。如果是,那么客户机将重用内存中的对象。否则,客户机从数据库获取对象,然后将其存储在内存中。

        注意:当使用Filter检索对象时,Filter总是到数据库获取对象。这不同于通过调用get<Object>ByName(…) API来检索对象。它将从缓存中返回对象,不一定要用数据库中的最新数据刷新该对象。但是,但是,运行筛选器将使缓存刷新使用筛选器结果缓存的对象。

        所有构建时对象(即,可以在Process Designer中修改的任何对象)和exportable ATRow对象(在具有dataManagementType为exportable的定义上)被缓存。如果对象具有子对象,则在检索父对象时将子对象与父对象缓存。默认情况下,应用程序不缓存以下运行时对象,但可以通过编程方式为它们启用缓存。

  • Box
  • Lot
  • Unit
  • WorkOrder (及其关联的OrderItem对象)

        在大多数情况下,使用缓存对象与使用未缓存对象相同。 当执行需要数据的操作时,应用程序首先检查数据是否在内存中,如果不是,则执行数据库查询。 当应用程序执行事务时,如果为该对象启用了缓存,它将始终刷新执行事务的客户端上的缓存数据。

缓存持续时间

        Plant Operations仅将每个对象类型中最近使用的100个对象保留在缓存中。 此限制不适用于forms 和 subroutines。 可以缓存的表单和子例程的数量没有限制。 例如,如果您在应用程序中获得Account001,Account002,...和Account100,那么它们都将位于缓存中。 当您获得Account101时,应用程序从缓存中删除Account001并将Account101放在缓存的顶部。 如果您随后获得Equipment001,则应用程序会将该对象添加到单独的缓存中。 这不会影响缓存的帐户,因为每个对象类型都是单独缓存的。

        Plant Operations保留整个会话的缓存数据。 这允许多个用户在同一会话期间以多种形式重用缓存数据。 Plant Operations的每个实例都有一个单独的缓存。

应用程序服务器缓存

        应用服务器还通过以下方式缓存影响Plant Operations客户端的信息:

        数据库配置信息:应用程序服务器缓存数据库配置设置,例如连接信息和站点ID。 如果此信息更改,则必须重新启动应用程序服务器。 这将清除缓存并确保您的应用程序使用正确的配置设置。

        对象:应用程序服务器缓存对象(如路径和生产线)及其关联对象(如路径步骤和工作中心)以提高性能。 当客户端使用这些对象执行事务时,应用程序服务器会确保缓存的对象在处理之前与数据库中的对象匹配。 应用程序设计人员不受此缓存的影响,也不需要执行任何任务来确保对象不会过时。

        UDA定义:每个应用程序服务器缓存UDA定义并每30分钟运行一次计划任务以刷新缓存的定义。 如果您有多个应用程序服务器并希望强制其中一个刷新其定义,则必须重新启动该应用程序服务器。 如果您只有一个应用程序服务器访问生产数据库,则此缓存不会影响您。

猜你喜欢

转载自blog.csdn.net/panjin72/article/details/87618519