汇高OA办公系统页面刷新优化AJAX
根据系统架构的设计原则,应尽量减少页面与数据库的交互以提高性能,其中,AJAX技术是最为普遍的技术之一。AJAX技术的存在,使得用户不用手动刷新页面,重新读取数据库中该页面所有的数据元素,而是由系统自动刷新页面上的某个元素或某个区域,只对必须刷新的数据进行读取,从而最大程度的避免数据库压力。
缓存 Ajax“引擎”。Ajax“引擎”可以运行在客户机而不是在服务器上,并且在最初加载页面时进行下载。这个引擎包含大量应用程序逻辑(以 JavaScript 代码实现)。尽管它包含了很多应用程序逻辑和表示框架元素,但是如果经过恰当的设计,它可以不包含任何业务数据或个性化内容。应用程序和表示都冻结在部署时。在典型的Web环境中,应用程序资源可能几个才会变更一次。
这意味着负责隔离应用程序资源和数据资源的 Ajax 引擎是高度可缓存的。例如Dojo 提供了构建工具来创建一个包含所有应用程序逻辑、表示和风格的压缩 JavaScript 文件。由于它只是一个文件,因此 Web 浏览器可以对其进行缓存,这意味着第二次访问启用 Dojo 的 Web 应用程序时,很可能就会从浏览器缓存中加载 Ajax,而不是从服务器上加载它。将这种情况与传统服务器端 Web 应用程序进行一下对比,后者每次请求都会导致大量的服务器处理,因为浏览器和网络中介不能对缓存不断变化的资源。另外,Ajax 应用程序引擎只是一个文件,所以它是可以使用代理缓存的。在大型的单位内部网中,只要有人曾经下载过某个特定版本的应用程序的 Ajax 引擎,其他任何人都可以从内部网网关上上获取一个缓存过的拷贝。因此,对于应用程序资源来说,经过良好定义的 Ajax 应用程序引擎符合 REST 准则,与服务器端 Web 应用程序相比,它具有显著的可伸缩性优势。
缓存 Ajax 数据。由于应用程序逻辑和状态都在浏览器上驻留并执行,因此应用程序与服务器的交互就与传统 Web 应用程序的方式有很大的不同。不需要获取混合的内容页面,只需要获取业务数据即可。应用程序是动态且高度个性化的 —— 但是却不能缓存,也无法伸缩。考虑到这个操作在Ajax 版本的应用程序中的情况。对于“最近查看的内容” 并不需要进行处理。当点击某个链接时,这些在页面上已经存在的信息并不会消失。
Ajax 架构风格的另外一个优点是它可以轻松处理服务器的故障。传统有状态服务器端 Web 应用程序通常会在服务器上保存大量的用户会话状态。如果服务器发生了故障,会话状态就丢失了,那么用户就会体验到非常奇怪的浏览器行为(自动返回主页或购物车中的东西消失等)。在采用有状态客户机和无状态服务的 Ajax 应用程序中,服务器崩溃/重新启动对于用户来说都是完全透明的,因为服务器崩溃不会影响会话状态,这些都保存在用户的浏览器中;无状态服务的行为是幂等的,可以由用户请求的内容来单独确定。