文档章节

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

疯狂的小潘
 疯狂的小潘
发布于 2015/01/25 22:12
字数 1030
阅读 46
收藏 1
点赞 0
评论 0

做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
零基础如何系统地学习前端开发?

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

@张帅在地上
2015/11/27
0
0
想学前端,为什么不看这些书呢?

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

小懒人23
2016/05/20
69
0
前端的知识体系如上,可以按以下思路进行系统的学习

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

尹华峰博客
2017/06/14
0
0
Python数据分析之武林秘籍

十八般武艺,大家各取所需。米哥简单整理了一下跟Python数据分析相关的技术呈现出来,台灯下,地铁里,各位码友、矿友且学且用,各显神通吧。 1. 机器学习和计算机视觉 Crab:灵活、快速的推...

chen_h
2017/12/10
0
0
关于O'Reilly Velocity China 2011 Web性能和运营大会的一些资料

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

长平狐
2012/06/11
193
0
java程序员从入门到精通

前言 java路漫漫,这是一份针对java服务端开发入门与进阶指南。 建议: 尽量用 google 查找技术资料。 有问题在 stackoverflow 找找,大部分都已经有人回答。 多看官方的技术文档。 ibm deve...

rock912
2016/07/04
92
4
服务端工程师入门与进阶 Java 版

前言 欢迎加入我们。这是一份针对实习生/毕业生的服务端开发入门与进阶指南。遇到问题及时问你的 mentor 或者直接问我。 建议: 尽量用google查找技术资料。 有问题在stackoverflow找找,大部...

天天顺利
2015/10/14
82
0
架构学习资料汇总

知名网站架构分析 探索Google App Engine背后的奥秘(1)–Google的核心技术 探索Google App Engine背后的奥秘(2)–Google的整体架构猜想 探索Google App Engine背后的奥秘(3)- Google App Eng...

peter8015
2016/04/22
186
0
D瓜哥分享的架构资料

扯扯蛋 以前见过零零散散地介绍一些知名网站架构的分析文章。最近D瓜哥也想研究一下各大知名网站的架构。所以,就搜集了一下这方面资料。限于时间问题,这篇文章分享的文章并没有都看完,所以...

hejunbinlan
2015/09/06
209
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

MacOS和Linux内核的区别

导读 有些人可能认为MacOS和Linux内核有相似之处,因为它们可以处理类似的命令和类似的软件。甚至有人认为苹果的MacOS是基于linux的。事实上,这两个内核的历史和特性是非常不同的。今天,我...

问题终结者
21分钟前
1
0
SpringBoot | 第八章:统一异常、数据校验处理

前言 在web应用中,请求处理时,出现异常是非常常见的。所以当应用出现各类异常时,进行异常的捕获或者二次处理(比如sql异常正常是不能外抛)是非常必要的,比如在开发对外api服务时,约定了响...

oKong
28分钟前
0
0
mysql高级

一、存储引擎 InnoDB MyISAM 比较 二、数据类型 整型 浮点数 字符串 时间和日期 三、索引 索引分类 索引的优点 索引优化 B-Tree 和 B+Tree 原理 四、查询性能优化 五、切分 垂直切分 水平切分...

丁典
49分钟前
1
0
rsync通过同步服务、系统日志、screen工具

rsync通过后台服务同步 在远程主机中建立一个rsync服务器,在服务器上配置好rsync的各种应用,然后将本机作为rsync的一个客户端连接远程的rsync服务器。 首先在A机器上建立并且配置rsync的配...

黄昏残影
今天
5
0
Spring Cloud Gateway 接口文档聚合实现

在微服务架构下,通常每个微服务都会使用Swagger来管理我们的接口文档,当微服务越来越多,接口查找管理无形中要浪费我们不少时间,毕竟懒是程序员的美德。 由于swagger2暂时不支持webflux 走...

冷冷gg
今天
123
2
流利阅读笔记31-20180720待学习

克罗地亚:输了世界杯,却赢了全世界 雪梨 2018-07-20 1.今日导读 1998 年,年轻的克罗地亚国家队在法国世界杯给全世界留下了不可磨灭的印象,格子军团一举夺得了季军。4 年后,克罗地亚折戟...

aibinxiao
今天
5
0
OSChina 周五乱弹 —— 我们是食物链的最底层

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @温家成 :分享谢安琪的单曲《姿色份子》 《姿色份子》- 谢安琪 手机党少年们想听歌,请使劲儿戳(这里) @贪吃飒:最近p2p怎么了、半个月爆了...

小小编辑
今天
959
14
Android Studio 3.0 之后打包apk出现应用未安装问题

1、废话 出现这个问题的原因,并不是只有一个,而是有多个原因,不懂的估计会被搞得一头雾水,下面我列举的是我遇到的几种问题和网友遇到的几种问题,但不一定是全部,也有可能有些莫名其妙的...

她叫我小渝
今天
0
0
前端基础

1. get请求传参长度的误区 误区:我们经常说get请求参数的大小存在限制,而post请求的参数大小是无限制的。 实际上HTTP 协议从未规定 GET/POST 的请求长度限制是多少。对get请求参数的限制是...

wenxingjun
今天
0
0
拦截SQLSERVER的SSL加密通道替换传输过程中的用户名密码实现运维审计(一)

工作准备 •一台SQLSERVER 2005/SQLSERVER 2008服务 •SQLSERVER jdbc驱动程序 •Java开发环境eclipse + jdk1.8 •java反编译工具JD-Core 反编译JDBC分析SQLSERVER客户端与服务器通信原理 SQ...

紅顏為君笑
今天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部