当前位置: 首页 > 编程日记 > 正文

WEB程序代码优化入手的几方面

这里对web程序方面的优化作一个总结.

1.编码规范化可读性优化

编码规范我想一般程序员不会不了解,如果你这方面是空白你应该好好补补基础了,做到编码规范是一个好的程序员的最基础要求,一个团队也应该有自己的编码规范。所以程序的优化也应该包含到这个方面,在你开发程序的过程中可能会有些遗漏,所以在我们进行编码规范化可读性优化是很有必要的。其实一份再好的程序代码若干年后你自己都未必能看的懂更不用说别人来看你的代码,使你自己写出的代码有更好的可读性,这个是一个好的程序员应该做的,并且是对一个团队和你自己作品的责任感。

优化方向就是使你的代码更清析更易懂。

2.程序效率、流程逻辑优化

程序效率的优化是最重要的,程序运行速度是程序代码好坏最重要的因素,程序逻辑其实就是你的解决思路,解决思路并不是唯一的,所以我们可以对它进行优化。逻辑的设计也和可读性有一定的关系,逻辑清晰可读性就更强。

优化的方向就很明确了提高速度,清晰逻辑。简单的逻辑并不代表一定是速度快,复杂的逻辑并不一定是慢的。所以在这两方面是关联。

3.SQL优化,减少查询次数

在使用数据库的程序中我们知道数据库的查询是在整个程序执行中占很大比例的,所以SQL的优化是非常重要的。

优化的方向一方面是SQL语句本身的优化,熟悉SQL的人应该会知道,不同的SQL写法执行的效率差别是很大的,如:尽量不对字段加函数操作 ,更多的大家可以去查找高效SQL这方面的资料。第二在一个页面中减少查询次数,这个道理很清楚,我们可以把整个页面的SQL都输出来进行分析,是否可以合并语句,是否可以做冗余字段等等,尽量减少SQL的查询次数,坚绝不在循环中使用查询。

4.缓存优化

缓存优化其实就是对上一点的补充,但缓存优化是很重要的,所以可以单独列为一点。缓存的数据主要就是从数据库中读取出来的。

对缓存的一些介绍:

1.静态页

静态页是所有大型网站不必有的处理方式,主要对一级页面和所有信息的详细页面的处理。其实静态页就是一种缓存处理,可以最大的降低服务器的负载,还有就是对SEO上的好处。静态页处理属于永久缓存,对于信息的详细页面只有在数据修改时才进行更新和当模版修改时进行批量的更新,对于一级页面进行编辑手动更新和定时更新。

2.小数据的永久缓存

像数据字典,新闻栏目,后台角色、用户等数据少长期不更新的数据可以进行永久的缓存处理。涉及到读取只读取缓存,只在修改数据时直接生成缓存。

3.访问频率高的数据按时缓存

像一些信息的点击率排行,最新数据等数据访问和更新频率高但如果都直接读取数据库肯定对赞成很大的负载,这种类型的数据就必须对数据缓存后定时更新。这里用memcached内存缓存是最好的处理方式。



当然缓存也应该适当,应该只把需要缓存的数据进行缓存。

5.html,css,js文件优化,减少冗余代码

这一点与服务端程序没有关系,主要是与浏览器相关的几方面。html的结构是会影响到浏览器的解析,所以好的html代码也会影响访问速度。相比之下客户端的代码就不允许有一点无用的东西存在,能把文件减少一K就应该减少。js虽然是在客户端执行但也应该去考虑它的效率问题,网络上也有这方面的文章介绍。

6.可用性优化

可用性优化主要指的是UED方面的,并不是每一个团队都有专门的UED,作为web程序的开发人员也应该有这方面的意识,去了解用户,而不是埋头写代码。努力使你开发的页面对用户更友好,更容易使用。

7.框架架构优化

如果有使用到开发框架,也应该考虑到对框架的优化,减少框架本身占用的资源。

其它:服务器架构优化、数据库优化

这些方面和程序开发没有直接关系,但和web程序的运行也是关系密切的,所以顺便提一提。

转载于:https://www.cnblogs.com/MaxIE/archive/2008/03/07/1094859.html

相关文章:

【Elastic Stack(一)】Elastic Stack简介

如果你没有听说过Elastic Stack,那你一定听说过ELK。实际上ELK是三款软件的简称,分别是Elasticsearch、Logstash、Kibana组成,在发展的过程中,又有新成员Beats的加入,所以就形成了Elastic Stack。 所以说,…

c#创建、保存excel正常执行要点补疑

网上搜索C#实现excel操作的示例太多了,但不知道有多少是经过验证确实可行才发布出来的,也是因为开发需要,我找了一些代码却发现大多都不能正确执行完毕,于是决定补充自己在实践中遇到的要点以供参考。如下示例:usingMi…

动态更新 AGS Cache

作者:Flyingis 提升ArcGIS Server访问速度最佳的方式是Cache,将所有图层切片保存在服务器,客户端请求时直接访问cache好的图片,这里分为两种情况,一是所有图层都做cache,二是部分图层做cache&#xff0…

SVN状态图标不显示的两种解决办法

文章目录第一种方法第二种方法首先情况如下:这样看不到状态是不是就很难受 本博主最近也是第一次使用SVN做版本控制 然后就出现了这样的情况后来经过查询才知道SVN刚下载安装后 设置什么的都是默认的 需要手动设置一下就OK啦 第一种方法 我们先在桌面或者资源管理…

SPOJ ATOMS - Atoms in the Lab

题目链接:http://www.spoj.com/problems/ATOMS/ 题目大意:有N个原子,他们每秒分裂成K个新原子,新原子也能继续分裂。问如果要控制他的数量为M以内,应在什么时候使其停止分裂。其实时间为0. 解题思路:可以发…

hive lock命令的使用

1.hive锁表命令 hive> lock table t1 exclusive;锁表后不能对表进行操作2.hive表解锁: hive> unlock table t1;3.查看被锁的表 1.hive> show locks; 转载于:https://www.cnblogs.com/liyanbin/p/10237482.html

技术类人员的职业发展的4大方向

几乎每个企业都需要技术员的支持,生产制造型企业需要现场生产控制和工艺流程方面的技术人才;it等高科技行业需要大量软件研发和设备维护的硬件工程师;房地产、建筑工程领域需要建筑设计师、土木工程师和施工技术人员。此外,不论是…

Injection of @Reference dependencies failed;

配置、注解、xml什么的所有东西都没有问题 可能是接口这边所应用的jar包版本太高了 尝试将对应的版本降低试一下就好了 我这边是dubbo的版本太高导致一直出现这种问题

机器学习与数据科学 基于R的统计学习方法(基础部分)

1.1 机器学习的分类 监督学习:线性回归或逻辑回归, 非监督学习:是K-均值聚类, 即在数据点集中找出“聚类”。 另一种常用技术叫做主成分分析(PCA) , 用于降维, 算法的评估方法也不尽…

sql语句收集

1:随机抽取前30条select top 30 * from test order by newid()order by newid():随机产生id号,然后根据id号排序;top 30:前30道题目。2:在排名次时,经常遇到取前10名,但刚好第11名(12、13...&am…

atitit.php中的dwr 设计模式

atitit.php中的dwr 设计模式 1. dwr的长处相对于ajax来说。。1 2. DWR工作原理 1 3. php的dwr实现 1 4. 參考 3 1. dwr的长处相对于ajax来说。。 dwr是构建在ajax上的。。更加的dsl化。。大大简化了编写ajax的工作量。 2. DWR工作原理 是通过动态把Java类生成为Javascript。…

UML2.0工具比較

來源 前言 「工欲善其事,必先利其器」,學習UML沒有好的工具幫忙,往往會讓開發人員半途而廢,尤有甚者,開發人員有時會因為使用了不容易使用的開發工具而 誤認為UML是一個非常困難學習的「技術」。殊不知UML只是一種「語…

Spark快速入门

文章目录1、Spark概述1.1、什么是Spark?1.2、为什么要学Spark?1.3、Spark的特点1.3.1、运行速度快1.3.2、易用性好1.3.3、通用性强1.3.4、兼容性强2、搭建Spark集群2.1、下载2.2、环境准备2.3、配置免密登录2.4、开始安装2.5、Spark HA 高可用部署2.5.1、…

[14] 薪酬迅速翻倍的13条跳槽原则

首先,真正的高级人才是不用找工作的,因为只有被工作找的份。 但是,难免有些高级人才厌倦了旧的工作环境,或者遇到天花板,没有了发展空间,或者遇到新老板上任后排除异己来提拔自己的亲信等等,如果…

html的body内标签之input系列1

1. Form的作用:提交当前的表单. 类似于去了银行提交的纸质单子,递到后台去办理相关业务。 text,password只有输入的功能;button,submit只有点击的功能。想要把这些信息提交,需要用Form button毛线用也没有(以后学JS的…

华为交换机系列异常流量抑制

作者:邓聪聪 配置流量抑制示例 配置流量抑制后的广播、未知单播和组播报文的速率为接口速率的 % 进入接口视图 <Quidway> system-view [Quidway] interface gigabitethernet 2/0/12 配置广播流量抑制 [Quidway-GigabitEthernet2/0/12] broadcast-suppression 80 配置组播…

微软,您的.net为中国程序员带来了什么?

往事如烟&#xff1a;2003年&#xff0c;那时我还在念大三&#xff0c;像中国大多数学生一样&#xff0c;为到底是投诚Java还是效忠.net日夜争论&#xff0c;上下求索&#xff0c;迷茫中特别渴望有一盏明灯照亮我辈学子的前程&#xff0c;当时&#xff0c;各大媒体的报道是市场…

NHibernate初学体验记

NHibernate 是一个基于.Net 的针对关系型数据库的对象持久化类库。NHibernate 来源于优秀的基于Java的关系型持久化工具Hibernate。NHibernate持久化你的.Net 对象到关系型数据库&#xff0c;远胜于写SQL去从数据库存取对象。你的代码仅仅和对象关联&#xff0c;NHibernat 自动…

java运算符-逻辑、三元运算符

1.逻辑运算符 逻辑运算符&#xff0c;它是用于布尔值进行运算的&#xff0c;运算的最终结果为布尔值true或false。 运算符 运算规则 范例 结果 & 与 false&true False | 或 false|true True ^ 异或 true^flase True ! 非 !true Flase && …

windowsclient开发--为你的client进行国际化

之前博客讲过函数&#xff1a; GetUserDefaultUILanguage Returns the language identifier for the user UI language for the current user. 我们国际化主要是支持三种语言&#xff0c;中文简体、繁体中文、以及英文。 获得用户使用语言 所以我们能够通过GetUserDefaultUI…

大数据主要职位

大数据主要有以下职位&#xff1a; 1&#xff09;数据分析师Data analyst&#xff1a;指熟悉相关业务&#xff0c;熟练搭建数据分析框架&#xff0c;掌握和使用相关的分析常用工具和基本的分析方法&#xff0c;进行数据搜集、整理、分析&#xff0c;针对数据分析结论给管理销售…

【Vegas原创】DataSet相互添加DataTable

//为DataSet添加DataTableds.Tables.Add(dt);//为DataTable添加DataSetdatatable dt dataset.Table[0]

大数据岗位必知必会的53个Java基础

文章目录1. java中和equals和hashCode的区别2. int与integer的区别3. String、StringBuffer、StringBuilder区别4. 什么是内部类&#xff1f;内部类的作用5. 进程和线程的区别6. final&#xff0c;finally&#xff0c;finalize的区别7. Serializable 和Parcelable 的区别8. 静态…

4514: [Sdoi2016]数字配对

Description 有 n 种数字&#xff0c;第 i 种数字是 ai、有 bi 个&#xff0c;权值是 ci。 若两个数字 ai、aj 满足&#xff0c;ai 是 aj 的倍数&#xff0c;且 ai/aj 是一个质数&#xff0c; 那么这两个数字可以配对&#xff0c;并获得 cicj 的价值。 一个数字只能参与一次配对…

bzoj 3339 莫队

题意&#xff1a; 求任意一个区间的SG函数。 想到线段树&#xff0c;但是线段树合并很麻烦。 线段树——分块。 分块的一个应用就是莫队算法。 怎么暴力递推呢&#xff1f; 从一个区间到另一个区间&#xff0c;Ans 取决于 Ans 和 加入和删除的这个数的大小比较。加入一个新数&a…

Ajax检测注册用户是否存在

HTML代码如下:LoginValidate.aspx<% Page Language"C#" AutoEventWireup"true" CodeFile"LoginValidate.aspx.cs" Inherits"LoginValidate" %><html xmlns"http://www.w3.org/1999/xhtml" ><head runat"…

Java Robot对象实现服务器屏幕远程监视

Java Robot对象实现服务器屏幕远程监视2006-01-16 17:33 作者&#xff1a; xiepan110 出处&#xff1a; BLOG 责任编辑&#xff1a;方舟   摘要&#xff1a;  有时候&#xff0c;在Java应用程序开发中&#xff0c;如&#xff1a;远程监控或远程教学&#xff0c;常常需要对计…

Oracle常用傻瓜问题1000问

1. Oracle安装完成后的初始口令? internal/oracle sys/change_on_install system/manager scott/tiger sysman/oem_temp 2. ORACLE9IAS WEB CACHE的初始默认用户和密码&#xff1f; administrator/administrator 3. oracle 8.0.5怎么创建数据库? 用orainst。如果有motif界面&…

安装需要的第三方库时,命令行输入pip提示不是内部或外部命令

简介 在做Python开发时&#xff0c;安装需要的第三方库时&#xff0c;大多数人喜欢选择在命令行用pip进行安装。 然而有时敲入pip命令会提示‘pip’不是内部或外部命令。。如图&#xff1a; 解决办法 1、在python安装目录中找得到script文件夹&#xff0c;查看文件夹内部是否存…

ehcache导致Tomcat重启出错

最近使用ehcache出现了问题&#xff0c;只要在配置文件中打开缓存&#xff0c;Tomcat在重启时就会报内存溢出异常。按说ehcache自己开启的资源&#xff0c;应该自己关闭才是。经查阅资料发现&#xff0c;需要在web.xml中配置一个监听器&#xff0c;该监听器会在应用程序关闭的时…