加速你的网络应用

简介: 平时我们希望提高应用的响应速度时,常用的有以下一些方法: 使用Gzip 减少Http Request次数 增加过期头信息 Expire Header 压缩CSS和Javascript文件 更多的方法,我们可以参考 Yahoo的34条前端优化规则 以及 Google的前端性能最佳实践  ,这两个主题都包含了大量的前端优化的内容。

平时我们希望提高应用的响应速度时,常用的有以下一些方法:

使用Gzip

减少Http Request次数

增加过期头信息 Expire Header

压缩CSS和Javascript文件

更多的方法,我们可以参考 Yahoo的34条前端优化规则 以及 Google的前端性能最佳实践  ,这两个主题都包含了大量的前端优化的内容。本篇着眼于如何结合Codeigniter的使用,来加速前端的性能。

1、第一条是使用Gzip。

在Codeigniter中,我们可以很方便的在 application/config/config.php 中打开 $config[‘compress_output’] = TRUE 这个选项,这样通过 view 输出的内容自动的就会进行gzip压缩。我对比了一个原来为24kb的首页,压缩后只有6.5k,可以说效果非常明显。

但是Codeigniter的gzip压缩选项打开后,view中输出时就不能再有 echo 语句,否则会发生如下的错误:

Fatal error: ob_start() [ref.outcontrol]: Cannot use output buffering in output buffering display handlers in

我这里的解决办法是使用 ini_set 设置全局的PHP变量,默认打开文件压缩。因为懒得改代码中的 echo 了,如果比较容易修改,可以改为使用 set_output 进行替换,也不会有问题。

扩展:

打开这个选项后,实际上我们只能压缩PHP脚本输出的部分,而现在网站中的CSS和JS文件也不小,所以对这一部分进行压缩也是比较必要的。这首先需要我们的服务器支持 gzip 压缩,这里我只是考虑 apache 2.x 的情况,apache 1.3 和 IIS 的情况,可以 Google 之。

下面这个方法是在 Linux 和 Apache 的环境下实验通过,需要有修改 php.ini 和 .htaccess 文件的权限。

a、首先检查服务器是否支持GZIP。使用phpinfo()打印服务器信息,查看 _ENV["HTTP_ACCEPT_ENCODING"] and HTTP_ACCEPT_ENCODING 看是否包含 gzip。

b、确保 apache 的 mod_deflate 模块已经激活。
c、在项目的 .htaccess 文件中加入下面的语句,apache 服务器就会自动帮你压缩你希望进行压缩的文件

AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/javascript

在 apache 1.3 中,可以使用 mod_gzip 进行压缩,具体的设置方式就不赘述了。另外,试验中发现,如果 apache 服务器以 FastCGI 的方式来解析 PHP,上面这种设置会失效。具体的原因和解决方法还没找到相应的资料。

我们的一个项目中,使用了HostMonster的虚拟主机,Google搜到了一些文档,据说可以在HostMonster的虚拟主机上配置打开Gzip的选项,多次试验也没成功,后来咨询了HostMonster的工作人员,确认了虽然服务器上有mod_deflate模块,但并不是给消费者使用的,我那个气愤呀。

2、减少Http的请求次数

用户的带宽是非常有限的,如果你的网站上有众多的小文件,则每个文件请求建立连接、下载这个三次握手的过程是非常消耗用户的带宽资源的,所以可以使用一些技术来将多个文件合并为一个文件一次下载。

可以使用 Css Sprite 的技术,将页面中需要的小图标 icon 类集中在一个文件中。因为每个图标的大小一般都很小,大概都不超过 2-3 kb ,整合成一个文件仍能够将文件大小控制在合理的范围之内。

 

3、减少JS和CSS文件的尺寸

随着网络应用的丰富,现在网页中的引用的JS和CSS文件越来越多,也越来越大。我们平时在编程的时候,为了浏览的美观与方便,会对代码进行格式化,增加注释和空行,使用有意义的变量名等。实际上对于浏览器来说,解析和执行这些文件是不要保留这些格式的,因此对JS和CSS文件进行一些压缩的处理就可以达到减少文件尺寸的目的。

4、设置过期的头信息

在Codeigniter中,可以通过调用 $this->output->set_header(); 来设置头信息。从而控制浏览器如何决定来处理已经被缓存的内容。

 

参考资料:

1、Speed UP your web application by Codeigniter

2、HTTP输出Gzip的注意事项
3、Yahoo的34条前端优化规则
4、Google的前端性能最佳实践
5、Cannot use output buffering in output buffering display handlers
6、Force GZIP compress on your HostMonster hosted website

相关文章
|
11天前
|
人工智能 运维 物联网
AI在蜂窝网络中的应用前景
AI在蜂窝网络中的应用前景
22 3
|
23天前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
72 6
|
17天前
|
监控 安全
公司上网监控:Mercury 在网络监控高级逻辑编程中的应用
在数字化办公环境中,公司对员工上网行为的监控至关重要。Mercury 作为一种强大的编程工具,展示了在公司上网监控领域的独特优势。本文介绍了使用 Mercury 实现网络连接监听、数据解析和日志记录的功能,帮助公司确保信息安全和工作效率。
87 51
|
7天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
本文旨在通过深入浅出的方式,为读者揭示卷积神经网络(CNN)的神秘面纱,并展示其在图像识别领域的实际应用。我们将从CNN的基本概念出发,逐步深入到网络结构、工作原理以及训练过程,最后通过一个实际的代码示例,带领读者体验CNN的强大功能。无论你是深度学习的初学者,还是希望进一步了解CNN的专业人士,这篇文章都将为你提供有价值的信息和启发。
|
14天前
|
SQL 安全 前端开发
PHP与现代Web开发:构建高效的网络应用
【10月更文挑战第37天】在数字化时代,PHP作为一门强大的服务器端脚本语言,持续影响着Web开发的面貌。本文将深入探讨PHP在现代Web开发中的角色,包括其核心优势、面临的挑战以及如何利用PHP构建高效、安全的网络应用。通过具体代码示例和最佳实践的分享,旨在为开发者提供实用指南,帮助他们在不断变化的技术环境中保持竞争力。
|
11天前
RS-485网络中的标准端接与交流电端接应用解析
RS-485,作为一种广泛应用的差分信号传输标准,因其传输距离远、抗干扰能力强、支持多点通讯等优点,在工业自动化、智能建筑、交通运输等领域得到了广泛应用。在构建RS-485网络时,端接技术扮演着至关重要的角色,它直接影响到网络的信号完整性、稳定性和通信质量。
|
14天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【10月更文挑战第36天】探索卷积神经网络(CNN)的神秘面纱,揭示其在图像识别领域的威力。本文将带你了解CNN的核心概念,并通过实际代码示例,展示如何构建和训练一个简单的CNN模型。无论你是深度学习的初学者还是希望深化理解,这篇文章都将为你提供有价值的见解。
|
15天前
|
网络协议 数据挖掘 5G
适用于金融和交易应用的低延迟网络:技术、架构与应用
适用于金融和交易应用的低延迟网络:技术、架构与应用
43 5
|
15天前
|
运维 物联网 网络虚拟化
网络功能虚拟化(NFV):定义、原理及应用前景
网络功能虚拟化(NFV):定义、原理及应用前景
31 3
|
15天前
|
数据可视化 算法 安全
员工上网行为管理软件:S - PLUS 在网络统计分析中的应用
在数字化办公环境中,S-PLUS 员工上网行为管理软件通过精准的数据收集、深入的流量分析和直观的可视化呈现,有效帮助企业管理员工上网行为,保障网络安全和提高运营效率。
24 1
下一篇
无影云桌面