加速你的网络应用

简介: 平时我们希望提高应用的响应速度时,常用的有以下一些方法: 使用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

相关文章
|
12天前
|
机器学习/深度学习 PyTorch TensorFlow
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic,深度学习探索者。深耕TensorFlow与PyTorch,分享框架对比、性能优化与实战经验,助力技术进阶。
|
2月前
|
监控 安全 Shell
管道符在渗透测试与网络安全中的全面应用指南
管道符是渗透测试与网络安全中的关键工具,既可用于高效系统管理,也可能被攻击者利用实施命令注入、权限提升、数据外泄等攻击。本文全面解析管道符的基础原理、实战应用与防御策略,涵盖Windows与Linux系统差异、攻击技术示例及检测手段,帮助安全人员掌握其利用方式与防护措施,提升系统安全性。
121 6
|
6月前
|
SQL 分布式计算 Serverless
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
鹰角网络为应对游戏业务高频活动带来的数据潮汐、资源弹性及稳定性需求,采用阿里云 EMR Serverless Spark 替代原有架构。迁移后实现研发效率提升,支持业务快速发展、计算效率提升,增强SLA保障,稳定性提升,降低运维成本,并支撑全球化数据架构部署。
579 56
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
|
5月前
|
人工智能 监控 安全
NTP网络子钟的技术架构与行业应用解析
在数字化与智能化时代,时间同步精度至关重要。西安同步电子科技有限公司专注时间频率领域,以“同步天下”品牌提供可靠解决方案。其明星产品SYN6109型NTP网络子钟基于网络时间协议,实现高精度时间同步,广泛应用于考场、医院、智慧场景等领域。公司坚持技术创新,产品通过权威认证,未来将结合5G、物联网等技术推动行业进步,引领精准时间管理新时代。
|
24天前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
259 11
|
6月前
|
存储 SQL 运维
中国联通网络资源湖仓一体应用实践
本文分享了中国联通技术专家李晓昱在Flink Forward Asia 2024上的演讲,介绍如何借助Flink+Paimon湖仓一体架构解决传统数仓处理百亿级数据的瓶颈。内容涵盖网络资源中心概况、现有挑战、新架构设计及实施效果。新方案实现了数据一致性100%,同步延迟从3小时降至3分钟,存储成本降低50%,为通信行业提供了高效的数据管理范例。未来将深化流式数仓与智能运维融合,推动数字化升级。
249 0
中国联通网络资源湖仓一体应用实践
|
8月前
|
机器学习/深度学习 编解码 自动驾驶
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
270 3
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
|
2月前
|
数据采集 存储 数据可视化
Python网络爬虫在环境保护中的应用:污染源监测数据抓取与分析
在环保领域,数据是决策基础,但分散在多个平台,获取困难。Python网络爬虫技术灵活高效,可自动化抓取空气质量、水质、污染源等数据,实现多平台整合、实时更新、结构化存储与异常预警。本文详解爬虫实战应用,涵盖技术选型、代码实现、反爬策略与数据分析,助力环保数据高效利用。
134 0
|
2月前
|
安全 Linux
利用Libevent在CentOS 7上打造异步网络应用
总结以上步骤,您可以在CentOS 7系统上,使用Libevent有效地构建和运行异步网络应用。通过采取正确的架构和代码设计策略,能保证网络应用的高效性和稳定性。
82 0
|
5月前
|
机器学习/深度学习 算法 测试技术
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
144 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析