提升网站性能开发的10个技巧

标签: 编程技术 开发的10个技巧 提升网站性能 | 发表时间:2015-10-22 01:00 | 作者:techug
出处:http://www.techug.com

随着网络的高速发展,网络性能的持续提高成为能否在芸芸 App 中脱颖而出的关键。高度联结的世界意味着用户对网络体验提出了更严苛的要求。假如你的网站不能做到快速响应,又或你的 App 存在延迟,用户很快就会移情你的竞争对手。以下为大家总结 10 条有关性能提升的经验,以供参考:

1.   采用反向代理服务器(Reverse Proxy Server)来对应用进行加速和保护

其作用主要在以下三方面:

  • 负载平衡 – 运行在反向代理服务器上的负载平衡器会在不同的不服务器  间进行传输平衡。透过它,你可以进行无差别的服务器增添。
  • 存静态文件 – 对于直接的文件请求,例如图片文件或代码文件,可以直接存储在反向代理服务器然后直接发送给用户,从而可以进行快速访问并为应用服务器进行减负使得程序性能得到提升。
  • 安全保护 – 反向代理服务器可以进行高安全度配置和对威胁进行识别和监测。

2.   增添一个负载平衡器

为网站增添一个负载平衡器是一个相对简单的变更,但是它可以带来不错的性能和安全性提升。负载平衡器的作用在于在不同服务器间进行传输分发。

负载平衡器的实施前提是有一个反向代理服务器,它在接收到 Internet 通信后把相关请求发送到其它服务器。平衡器的妙处在于它支持两个或以上的应用服务器,使用选择算法来分割服务器间的请求。

3.   缓存静态和动态内容

缓存技术的使用可使内容更快地展示给用户,其处理策略有:在需求发出时更快地处理内容,把内容存放在更快的设备上,或是使内容离用户更近。

4.   数据压缩

压缩技术是一个巨大的潜在性能加速器。其主要作用体现在对图片,视频或音频等文件,能够进行高效的压缩处理。

5.   优化 SSL/TLS 访问

尽管 SSL/TLS 变得越来越流行,但是它对于性能的影响也应得到重视。其对性能的影响主要体现在两个方面:

  • 每当新的连接开启,初始化握手都是无法避免的,即浏览器每次都需要使用 HTTP/1.X 建立服务器连接。
  • 存放于服务器上的加密数据会越来越大,加密后用户读取时也需要进行解码。

那么该如何进行处理呢?

  • 会话缓存—使用 ssl_session_cache 来直接缓存建立新 SSL/TLS 连接的参数
  • 会话 ID 化—把指定 SSL/TLS 的标识/ID 存放起来,但要建立新连接时,就可以直接取用,从而免去重新建立通信的繁琐。
  • OCSP stapling 优化—通过抓取 SSL/TLS 认证信息来减免建立通信的时间。

6.   部署 HTTP/2 或 SPDY

对于已经启用 SSL/TLS 的网站,一旦结合 HTTP/2 和 SPDY 将能实现性能上的强强联合;因为其结果是会让单一连接的建立仅需一次通信握手。SPDY 和 HTTP/2 的主要特性是它们使用的是单一连接而不是多方连接。

7.   定期更新软件版本

8.   优化 Linux 性能

例如对 Linux 进行以下配置或处理:

  • Backlog 队列

如果你有一些将要停用的连接,可以考虑增加 net.core.somaxconn。

  • 文件描述符

NGINX 允许每个连接最多使用两个文件描述符。如果你的系统服务的是多个连接,你可能需要考虑增大 sys.fs.file_max 的值。

  • 瞬时端口

当作为一个代理使用时,NGINX 会为每个 upstream 服务器创建临时的瞬时(ephemeral)端口。因此可以尝试加大 net.ipv4.ip_local_port_range 的值来增加可用端口数。

9.   优化 Web 服务器性能

  • 访问日志优化

在 NGINX 中,在 access_log 中加入 buffer=size 参数来实现日志的缓存写入;加入 flush=time 则可实现在某个时间间隔后进行缓存内容写入。

  • 缓存

启用缓存可使连接响应更快。

  • 客户端活动连接

活动连接可减少重连的次数,特别是启用 SSL/TLS 的情况下。

  • Upstream 活动连接

Upstream 连接指的是连接到程序服务器,数据库服务器等的连接。

  • 限制资源的访问

采取合适的策略来限制资源访问可以提高性能和安全性。

  • 进行 worker 处理

Worker 处理模式就是请求驱动处理模式。NGINX 使用了一个基于事件的模型和 OS 依赖机制来有效地对请求进行分发。

  • 进行 socket 分表

Socket 分表可以为每个 worker 处理创建一个 socket 监听器,当核心委派连接分到给监听器时,可以马上知道哪个处理是即将执行的,从而使处理流程变得简洁。

  • 线程池处理

任何计算机线程都有可能由于单个缓慢的操作而挂起。对于 web 服务器软件来说,磁盘访问是一个性能瓶颈,例如进行数据复制等操作。当使用线程池来处理时,可以把一些响应慢的操作单独地放入某个任务组里面,从而不会对其它操作造成影响。

10. 进行实时监控以快速解决问题和瓶颈

实施实时监控,可以全面掌握系统的运行情况,发现问题解决问题,甚至是找出造成性能瓶颈或运行缓慢的原因。

例如可对如下的问题进行监控:

  • 服务器宕机
  • 连接访问丢失
  • 服务器缓存丢失严重
  • 服务器发送了错误的数据

相关 [提升 网站 性能] 推荐:

提升网站性能开发的10个技巧

- - 程序师
随着网络的高速发展,网络性能的持续提高成为能否在芸芸 App 中脱颖而出的关键. 高度联结的世界意味着用户对网络体验提出了更严苛的要求. 假如你的网站不能做到快速响应,又或你的 App 存在延迟,用户很快就会移情你的竞争对手. 以下为大家总结 10 条有关性能提升的经验,以供参考:.   采用反向代理服务器(Reverse Proxy Server)来对应用进行加速和保护.

Go 1.1 的性能提升

- - 博客 - 伯乐在线
伯乐在线注:今天上午在微博推荐了英文原文,感谢 @Codefor 的热心翻译. 如果其他朋友也有不错的原创或译文,可以尝试 推荐给我们. 这是Go1.1发布后性能提升分析系列的第一篇文章. Go官方文档( 这里和 这里)报告说,用Go1.1重新编译你的代码就可以获得30%-40%的性能提升.

提升Java的锁性能

- - Java译站
几个月前我们介绍了如何通过 Plumbr来 进行线程锁检测,随后便收到了很多类似的问题,“Hi,文章写得不错,现在我终于知道是什么引发的性能问题了,但是现在我该怎么做. 为了在我们的产品中集成这个解决方案,我们付出了许多努力,不过在本文中,我想给大家分享几个常用的优化技巧,而不一定非要使用我们这款锁检测的工具.

提升 web 应用程序的性能

- pathfinder - IBM developerWorks 中国 : 文档库
作为 web 用户,我们知道页面加载或刷新的速度对其成功至关重要. 本文将帮助您更好地理解影响 web 应用程序性能的因素. 学习识别这些问题并且找到客户端内容的瓶颈. 探索 JavaScript、DOM、CSS 和 Dojo 小部件的性能问题. 将通过一个例子展示使用 YSlow 和 Firebug 适当调整 Dojo 小部件.

TCmalloc对squid的性能的提升

- caoxg - 开心平淡对待每一天。热爱生活
           TCmalloc对squid的性能的提升一、简介:. 1、安装tcmalloc所需要的libunwind库 [32位系统不用安装]. *注意:据说加上’–with-large-files’ 选项时编译会出错. 4、配置好squid并启动squid.. squid+tcmalloc: 20 型号:Dell R410 硬盘:2*SAS/146G/15K 内存:16G CPU:16.

Java 8:HashMap的性能提升

- - Java译站
HashMap是一个高效通用的数据结构,它在每一个Java程序中都随处可见. 你可能也知道,HashMap使用key的hashCode()和equals()方法来将值划分到不同的桶里. 桶的数量通常要比map中的记录的数量要稍大,这样每个桶包括的值会比较少(最好是一个). 当通过key进行查找时,我们可以在常数时间内迅速定位到某个桶(使用hashCode()对桶的数量进行取模)以及要找的对象.

如何提升 RailS 应用的性能?

- - ITeye资讯频道
「铁路很慢」,你也许听过这个笑话,那么我们的 Rails 框架呢. 如果说 Rails 慢,那么如何提升 Rails APP 的性能就成了开发者们最关注的问题. 也许你听说过很多提升 RoR APP 性能的方法,它们有难有易,我们需要在选择其中最能帮助开发者脱离性能困境的. 这里列举了几种不同的提升 Rails 应用性能的方法.

HHVM 是如何提升 PHP 性能的?

- - 码农网
HHVM 是 Facebook 开发的高性能 PHP 虚拟机,宣称比官方的快9倍,我很好奇,于是抽空简单了解了一下,并整理出这篇文章,希望能回答清楚两方面的问题:. 它为什么比官方的 PHP 快很多. 在讨论 HHVM 实现原理前,我们先设身处地想想:假设你有个 PHP 写的网站遇到了性能问题,经分析后发现很大一部分资源就耗在 PHP 上,这时你会怎么优化 PHP 性能.

提升网站用户体验的7个妙招

- - 人人都是产品经理
古者称师为先生,十年树木,百年树人,行业要进步,先生多多益善. 自觉学识尚浅,还远未达到先生的高度,但希望尽自己微薄之力,力所能及的做一些解惑工作. 最近在微博里回复了几个朋友的咨询,挑选其中一个有代表性的问题,在博客里做个展开说明分享. 问题:网站用户体验包括哪些内容,如何有效提升. 回答:网站用户体验,是个很宽泛的概念,为便于理解和记忆,简单归纳可分为7个内容:网站性能、视觉设计、导航分类、站内搜索、网站内容、交互设计、登录(付款)方式.

可提升网站访问性的10个步骤

- - 设计达人
网站越来越重视 用户体验,对于做网站的人员来说是否了解过一些可以增加网站可读性的Tips. 今天腾讯ISUX的温总向大家分享可提升网站访问性的10个步骤,每一步都可以在20分钟内完成,这篇文章也可以在20分钟内看完. 第一步,检查. 不允许空,不允许过长,简洁明了. 是第一个可以访问到内容的元素,所以一定要非常重视.