文档章节

构建web高性能网站的一些知识

疯狂的小潘
 疯狂的小潘
发布于 2015/01/25 22:12
字数 1030
阅读 47
收藏 1

做java web开发己经两三年了,突然之间感觉自己学习的知识好少,现在想大致的对构建高性能web构架进行整理一下:

  1. 最基础的优化还是要放在程序上,如果程序本身在设计上有问题,那其他再好改进也是没用的。我们在开发时应不断的去与同事进行沟通,对于重要的处理部位,在相互进行代码审查,不要以为这很浪费时间,一旦后期出现问题,花费的时间会更多。

  2. 数据结构优化,如果数据量很大,我们必须要考虑数据结构本身是否有问题,简单一点的,查询带有图片的数据表会很慢,就算你的查询语句中不包括这个字段也是性能不高的,所以有必要把图片单独做成数据表进行关联。再小的图片也请你不要忘记这样做。其次就是索引,分析一些经常要用户的查询表,建立合适的索引会极大的提高查询效率。有一些查询语句是用不上索引,也可以对sql语句做进一步的优化。分表也是一种数据处理策略,分库也是一种数据处理策略,我们应尽量的把一些历史记录做成单独的一部分,使其不影响正常的业务性能。如我公司会记录日常员工的进出刷卡性况,因为数据大,查询频繁,所以将这部分记录做成单独的一个数据库,进行按月份分表处理。这样年代久远的记录就不会影响分析统计的性能。

  3. 使用缓存,举个例子,如果是hibernate就可以使用二级缓存,这样会极大的提高业务数据处理性能。如果是其他的持久化方案的话,可以布署单独的缓存服务器,如redis,memoreCache等缓存方案性能都是非常高的。曾经看到有些项目在使用缓存时,会直接在程序中去判断缓存是否存在,如果不存在则创建存放,如果存在则直接取出缓存,这样做的本质是没有错的,但不要直接在程序中实现得这么直白,java的注解是很强大的,这些最基本的判断都可以交给注解处理,我们只要关心如果创建新的实例就可以了。

  4. 提高前端访问效率,这里可以分为两步:第一步是节省流量,如果加载的流量过大,带宽不够的话,那访问效果会直线下降,所以我们要尽量的去压缩加载的内容,使每一次的访问流量尽可以减少。第二步是生静处理,对于一些访问量大的页面可以使用静态页面进行直接访问,这样会减轻非常大一部分服务器压力。

  5. 负载均衡,提高服务器并发处理能力。当访问量已经超过服务器的处理能力时,可以适当的增加服务器,分散用户的请求。这里需要注意的是,前面如果使用了缓存,那这个缓存就必须是可共享的缓存,不然会造成数据的误读,脏写。

  6. CDN,这个想必大家在下载jquery时可以看到过,简单的来说,他的作用就是将要访问的数据放在离用户最近的网络上,这样用户就可以快速的访问这些数据了,这样不仅减轻了服务器的带宽,也提高的加载性能。

    再进一步的性能提高,小可就还要认真学习了。

















© 著作权归作者所有

共有 人打赏支持
疯狂的小潘
粉丝 4
博文 14
码字总数 5710
作品 0
武汉
高级程序员
大型网站架构系列:20本技术书籍推荐

学习是技术人员成长的基础,本次分享20本技术方面的书籍,这些书不是每一本都是经典,但是每一本都有其特点。以下20本大部分本人都看过,因此推荐给大家。(本次推荐的20本只是一个参考,比如...

xumaojun
05/03
0
0
想学前端,为什么不看这些书呢?

目前市场上HTML、CSS 类别书籍,都是大同小异,在当当网、卓越网搜索一下很多推荐。今天web前端大牛根据自己的经验总结如下:Javascript 的书籍推荐看老外写的,国内很多 Javascript 书籍的作...

小懒人23
2016/05/20
69
0
零基础如何系统地学习前端开发?

原文出处:@张帅在地上 网站开发开发大致分为前端和后端,前端主要负责实现视觉和交互效果,以及与服务器通信,完成业务逻辑。其核心价值在于对用户体验的追求。可以按如下思路学习系统学习:...

@张帅在地上
2015/11/27
0
0
前端的知识体系如上,可以按以下思路进行系统的学习

  前端的知识体系如上,可以按以下思路进行系统的学习,以下是峰峰特别分享:   【基础知识】   1. html + css 这部分可以在w3cschool 在线教程上学习(网址:www.w3cschool.cn),边学边...

尹华峰博客
2017/06/14
0
0
关于O'Reilly Velocity China 2011 Web性能和运营大会的一些资料

1.1.1 摘要 随着Web 1.0到2.0的发展,PC到移动端的扩展和最近炙手可热的Html5的推出,使得互联网担当着越来越重要得角色——Web未死犹生,而且作为开发者的我们必须在有限的硬件资源下,尽可...

长平狐
2012/06/11
193
0

没有更多内容

加载失败,请刷新页面

加载更多

一次由HandlerInterceptor进行的深入思考

HandlerInterceptor 是SpringFramework为我们提供的拦截器,一般我们可以用来鉴权或者日志记录等。 它是一个interface,主要方法有: /** * Intercept the execution of a handler. Called...

kipeng300
30分钟前
1
0
cmd中查询mysql表出现中文乱码

问题:在pycharm中正常的fetchall拉取数据,能够正常显示,而在cmd中直接select却出现中文乱码。 解决思路:右键查看cmd命令窗口属性得到,cmd窗口默认编码是gbk(如下图所示),而设置的mys...

fang_faye
56分钟前
2
0
centOS 安装Python3与python2并存

centOS 安装Python3与python2并存 如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境, 比如yum!!!!! 不要动现有的python2环...

MedivhXu
今天
2
0
Spring JdbcTemplate模板模式与回调结合分析

在看Spring的JdbcTemplate的时候,看到其将模板模式和回调模式结合使用的实现,可以精妙的解决很多的问题。详见Spring中涉及的设计模式总结中的关于模板模式和回调模式结合的具分析,本文利用...

宸明
今天
1
0
docker update:更新一个或多个容器的配置

更新容器的配置 docker update:更新一个或多个容器的配置。 具体内容请访问:https://docs.docker.com/engine/reference/commandline/update/#options 语法:docker update [OPTIONS] CONTA...

lwenhao
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部