浏览器发送一次请求,后台会经历三个步骤:数据库数据加载->数据业务逻辑处理->数据页面展示。任何一个步骤都有可能出现性能瓶颈,有的瓶颈还出现在两个步骤交互数据之间。针对不同的步骤由不同解决方式。
当加载出现性能问题时,首先要找到引起性能骤变的瓶颈,找到问题的本质,然后对症下药。针对某个阶段性能解决方案大致分两个方向:1.优化程序本身,如SQL语句、逻辑处理代码、页面展现代码;2.使用缓存技术,一次计算,多次使用,如:试图物理化(临时表)、内存缓存(Ecache、Hibernate)、页面静态化等。
数据库加载慢
指的是,取数据的SQL语句性能非常差。可以通过优化SQL结构、添加索引来提高SQL性能。如果上面努力收效甚微,可以把查询结果物理化,相当于存放在缓存区中,物理化后,下次请求就不再执行耗时的SQL,而是直接取出值。常用试图物理化、试图实体化抽象的描述这种场景和需求。使用物理化,需要注意,及时的更新物理化实体的数据。可以通过设置后台定时器、触发器来截获这种变更请求。
运算速度慢
从数据库中取到结果集后,需要在内存中计算,如果计算过程非常的慢,可以优化程序,如减少不必要的循环。如果在做了优化努力之后无果,可以引入缓存的概念,花大工夫计算出来的结果缓存在内存中,ecache就是一个功能强大,开源的缓存框架。
在设计程序时,要避免频繁的数据库操作,特别是在一次请求中频繁的数据库操作,按照文件系统的观点,就是频繁的执行IO操作,这样效率必然会很低。在Eway工作流平台中,计算用户可以操作的栏目,使用的方式是:先获取由用户相关的所有权限主体(用户、部门、岗位),然后循环权限主体,针对每个权限主体去数据查找关联的栏目,可以预见的到,每次循环都会进行数据库的操作,频繁的对数据库操作,不仅加大了数据库的压力,同时降低运行效率。对于这种情况,问题的关键是如何减少数据库操作次数,即减少IO的次数,有两种方式:一,一次性的把权限主体和栏目都加载到内存中,只执行两次数据库操作,得到两个结果集后,再进行计算。二,在数据库端,书写试图、存储过程一次性把结果集返回,这种方式效率极高,但是书写SQL的能力要求高。另外为了提高开发效率把把SQL模块化,写成试图,以增强SQL的复用能力。
页面展现慢
页面静态化,把好不容易计算出来的结果持久化在静态页面中。相对而言,在数据库端优化性价比最高。
页面静态化补充
页面静态化,对访问量大的首页有很大的帮助,静态化后,可以减轻页面加载、编译时间。更重要的是,可以省去对数据库的访问操作,减轻数据库的压力。页面静态化,还是SEO的重要组成部分,对网站的应用推广起大作用。
页面静态化,好比临时表、缓存区。缓冲一次,多次使用,而不需要每次都去缓冲。他不仅仅局限在信息发布中,还有更广的应用场景,比如加载某项内容,非常的耗时,响应慢,第一反应就是,优化对应的查询SQL,创建索引,改良SQL语句结构等,一般情况下,可以达到效果,如果上面的努力都失败了,响应还是很慢。可以通过页面静态化方案进行改良,设置一个定时器,同时在展示页面设置标签,当相应内容在后台、数据库有更新时后台动态的替换掉标签内容。替换之后,当前最新的内容写死在页面上,浏览器请求时,对该部分内容的加载,就不再需要访问数据库,也不需要进行复杂的逻辑计算了,大大的提高了效率。不过进行页面静态化需要额外的替换动作,一般是在触发某件事情后进行替换,如果事件不好捕获,就设置一个后台定时器,实时的扫描相关内容,已决定是否进行替换操作。
另外不要以为只有Html才能做模板,才能设置标签被替换,其实任何支持动态编译的页面资源都可以作为模板。比如Jsp页面,在替换相关内容后,可以动态的编译出来。
分享到:
相关推荐
本文将从ABAP程序的编写技巧、I/O操作、内存占用、CPU负载等方面来介绍提高ABAP程序运行效率的方法。 ABAP是一种支持结构化程序设计的语言,它合并了所有通常的控制结构和模块化概念,同时,也支持面向对象的程序...
但是这并不等于我们可以忽略程序的运行效率,下面就介绍一下本人积累的一些简单实用的提高程序运行效率的方法,希望对大家有所帮助。 一、尽量减少值传递,多用引用来传递参数。 至于其中的原因,相信大家也很清楚,...
提高MATLAB程序运行效率的若干手段 MATLAB是一种功能强大的科学及工程计算软件,它具有强大的数学计算和分析功能、丰富的可视化图形表现功能和方便的程序设计能力。但是,MATLAB是一种解释型语言,计算速度慢是其...
### VisualFortran程序运行速度的优化方法 在IT领域,特别是对于从事科学计算、工程模拟等领域的开发者来说,提升程序的运行效率是非常重要的工作之一。本文将基于给定的文件内容,详细介绍如何优化Visual Fortran...
本文将深入探讨提高VBA程序运行效率的有效方法。 #### 二、简化代码结构 **1. 模块化编程** - **优点**:通过将通用功能封装为可重用的子程序或函数,可以显著提高代码的维护性和可读性。例如,将查找特定条目的...
数据存储结构是编程领域中的核心概念之一,它对程序运行效率有着显著的影响。在本文中,我们将深入探讨数据存储结构如何影响程序的性能,并通过一个具体的例子——阶乘算法,来展示不同数据结构的选择如何改变代码...
根据实际需求合理分配输出地址,用一条指令控制多个输出,提高程序运行速度。 3. **脉冲触发指令**:在PLC中,SET指令仅需执行一次,常与脉冲输出指令(PLS/PLF)结合使用,避免在每次扫描时执行,从而减少程序运行...
标题中的“54个提高PHP程序运行效率的方法”和描述中的“个人总结的关于提高PHP程序运行效率的方法”指的是在编写和优化PHP代码时采取的各种策略,旨在减少资源消耗,提高程序运行速度。以下是根据提供的内容提取的...
9. 硬件抗干扰设计:提高单片机的稳定性也是提高其运行效率的一种手段,通过合理的硬件布局和电路设计,减少电磁干扰对单片机的影响。 10. 开启单片机的内置功能模块:对于单片机内部集成的诸如定时器、ADC、PWM等...
预先为数据结构分配足够的空间,减少内存碎片,从而提高程序运行速度。 3. **使用函数代替脚本**:函数比脚本执行更高效,因为它们在调用时只需加载一次,而脚本每次调用都会加载中间变量。因此,尽可能使用函数...
在SAP ABAP开发环境中,理解并优化程序的运行效率是至关重要的,因为这直接影响到系统的性能和用户体验...通过这些工具,开发者能够深入理解程序运行过程,找出性能瓶颈,从而实现有效的优化,提升整个系统的运行效率。
### LabVIEW的运行效率提升策略 #### 一、识别并解决程序瓶颈 为了提升LabVIEW程序的运行效率,首先需要明确程序的瓶颈所在。根据“80/20法则”,通常情况下,大约20%的代码消耗了80%的运行时间。因此,通过优化这...
为了提高程序的运行效率,MATLAB 提供了多种实用工具及编码技巧。以下是提高 MATLAB 运行效率的六种方法: 1. 循环矢量化:MATLAB 是为矢量和矩阵操作而设计的,因此,可以通过矢量化方法加速 M 文件的运行。例如,...
将数据暂存在缓冲区内,待达到一定量后再批量进行数据库操作,这样可以显著减少数据库交互次数,提高程序效率。 #### ESQL/C程序编译原理 ESQL/C程序是通过在C语言程序中嵌入SQL语句来实现的。在程序编译过程中,...
这里提供一些建议以提高你的程序运行速度和减低系统荷载。 1, 减少数据库DB的读写操作, 当使用VIEW视图的时候... 2, 避免使用SELECT *, 尽量使用SELECT A B C INTO TABLE ITAB这样的语句... 3, 避免频繁使用...
以下是一些关键点,可以帮助开发者提高程序运行效率。 与外设或文件的交互是程序运行速度的一个主要瓶颈。例如,GPIB(通用接口总线)通信速度相对较低,仅为1Mbps,远低于CPU和内存的处理速度。因此,在设计涉及...
XP系统中,合理分配虚拟内存有助于提高程序运行效率。默认情况下,虚拟内存是自动管理的,但用户也可以手动设置,确保页面文件大小适当,避免频繁交换导致的性能下降。 磁盘碎片整理是另一个提升速度的手段。随着...
以下是一些关键点,可以帮助开发者提高程序运行效率。 与外设或文件的交互是程序运行速度的一个主要瓶颈。例如,GPIB(通用接口总线)通信速度相对较低,仅为1Mbps,远低于CPU和内存的处理速度。因此,在设计涉及...