目录
1. 开启 APC 扩展
2. 禁用调试模式
4. 使用缓存技术
5. 数据库优化
6. 最小化脚本文件
首页 后端开发 php教程 Yii框架官方指南系列52——专题:性能调整

Yii框架官方指南系列52——专题:性能调整

Feb 16, 2017 am 10:00 AM



网络应用程序的性能受很多因素的影响。数据库存取,文件系统操作,网络带宽等都是潜在的影响因素。 Yii 已在各个方面减少框架带来的性能影响。但是在用户的应用中仍有很多地方可以被改善来提高性能。

1. 开启 APC 扩展

启用 PHP APC 扩展 可能是改善一个应用整体性能的最简单方式。此扩展缓存和优化 PHP 中间代码并避免时间花费再为每个新来的请求解析PHP脚本。

2. 禁用调试模式

禁用调试模式是另一个改善性能的容易方式。若常量 YII_DEBUG 被定以为 true,这个 Yii 应用将以调试模式运行。 调试模 式在开发阶段是有用的,但是它影响性能因为一些组件引起额外的系统开销。例如,信息记录器(the message logger)将为 被条被记录的信息记录额外的调试信息。

3. 使用 yiilite.php

当启用 PHP APC 扩展 时, 我们可以将 yii.php 替换为另一个名为 yiilite.php 的引导文件来进一步提高 Yii-powered 应用的性能。

文件 yiilite.php 包含在每个 Yii 发布中。它是一些常用到的 Yii 类文件的合并文件。在文件中,注释和跟踪语句都被去除。因此,使用 yiilite.php 将减少被引用的文件数量并避免执行跟踪语句。

注意,使用 yiilite.php 而不开启 APC 实际上将降低性能,因为 yiilite.php 包含了一些不是每个请求都必须的类,这将花费额外的解析时间。 同时也要注意,在一些服务器配置下使用 yiilite.php 将更慢,即使 APC 被打开。 最好使用演示中的 hello world 运行一个基准程序来决定是否使用 yiilite.php

4. 使用缓存技术

如在 缓存 章节所述,Yii 提供了几个可以有效提高性能的缓存方案。 若一些数据的生成需要长时间,我们可以使用数据缓存 方法来减少数据产生的频率;若页面的一部分保持相对的固定,我们可以使用 碎片缓存 方法减少它的渲染频率;若一整个页面保持相对的固定,我们可以使用 页面缓存 方法来节省页面渲染所需的花销。

若应用在使用 Active Record,我们应当打开 数据结构缓存 以节省解析数据表结构的时间。可以 通过设置CDbConnection::schemaCachingDuration 属性为一个大于 0 的值来完成。

除了这些应用级别的缓存技术,我们也可使用服务级别的缓存方案来提高应用的性能。 事实上,我们之前描述的PHP APC 缓存 就属于此项。 也有其他的服务器技术,例如 Zend Optimizer, eAccelerator, Squid,其他不一一列出。

5. 数据库优化

从数据库取出数据经常是一个网络应用的主要瓶颈。虽然使用缓存可以减少性能损失,它不能解决根本问题。 当数据库包 含大量数据而被缓存的数据是无效时,如果没有良好的数据库和查询优化设计,获取最新的数据将会非常耗费资源。

在一个数据库中聪明的设计索引。索引可以让 SELECT 查询更快, 但它会让 INSERTUPDATE 或 DELETE 查询更慢。

对于复杂的查询,推荐为它创建一个数据库视图,而不是通过PHP代码生成查询语句让DBMS来重复解析他们。

不要滥用 Active Record。虽然 Active Record 擅长以一个 OOP样式模型化数据, 它实际上为了它需要创建一个或几个对 象来代表每条查询结果降低了性能。 对于数据密集的应用,在底层使用 DAO 或 数据库接口 将是一个更好的选择。

最后但并不是最不重要的一点,在你的 SELECT 查询中使用 LIMIT 。这将避免从数据库中取出过多的数据 并耗尽为 PHP 分配的内存。

6. 最小化脚本文件

复杂的页面经常需要引入很多外部的 JavaScript 和 CSS 文件。 因为每个文件将引起一次额外的往返一次,我们应当通过联合文件来最小化脚本文件的数量。 我们也应当考虑减少每个脚本文件的大小来减少 网络传输时间。有很多工具来帮助改善这两方面。

对于一个 Yii 产生的页面,例外是一些由组件渲染的脚本文件我们不想要更改 (例如 Yii core 组件,第三方组件)。 为了最小化这些脚本文件,我们需要两个步骤。

Note: 下面描述的 scriptMap 特征已自版本 1.0.3 起被支持。

首先,通过配置应用组件 clientScript 的 scriptMap 属性来声明脚本被最小化。 可以在应用配置中完成,也可以在代码中配置。例如,


$cs=Yii::app()->clientScript;
$cs->scriptMap=array(
    'jquery.js'=>'/js/all.js',
    'jquery.ajaxqueue.js'=>'/js/all.js',
    'jquery.metadata.js'=>'/js/all.js',
    ......
);
登录后复制

上面的代码所做是映射这些 JavaScript 文件到 URL /js/all.js。 若这些 JavaScript 文件任何之一需要被一些组件引入, Yii 将引入这个 URL (一次) 而不是各个独立的脚本文件。

其次,我们需要使用一些工具来联合 (和压缩) JavaScript 文件为一个单独的文件,并保存为 js/all.js

相同的技巧也适用于 CSS 文件。

在 Google AJAX Libraries API 帮助下我们可以改善页面载入速度。例如,我们可以从 Google 的服务器引入jquery.js 而不是从我们自己的服务器。要这样做, 我们首先配置 scriptMap 如下,


$cs=Yii::app()->clientScript;
$cs->scriptMap=array(
    'jquery.js'=>false,
    'jquery.ajaxqueue.js'=>false,
    'jquery.metadata.js'=>false,
    ......
);
登录后复制

通过映射(map)这些脚本文件为 false,我们阻止 Yii 产生引入这些文件的代码。作为替代,我们在页面中编写如下代码直接从 Google 引入文件,

<head>
<?php echo CGoogleApi::init(); ?>

<?php echo CHtml::script(
    CGoogleApi::load(&#39;jquery&#39;,&#39;1.3.2&#39;) . "\n" .
    CGoogleApi::load(&#39;jquery.ajaxqueue.js&#39;) . "\n" .
    CGoogleApi::load(&#39;jquery.metadata.js&#39;)
); ?>
......
</head>
登录后复制

 以上就是Yii框架官方指南系列52——专题:性能调整的内容,更多相关内容请关注PHP中文网(www.php.cn)!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Yii框架中的RESTful API开发 Yii框架中的RESTful API开发 Jun 21, 2023 pm 12:34 PM

Yii是一款基于PHP的高性能MVC框架,它提供了非常丰富的工具和功能,支持快速、高效地开发Web应用程序。其中,Yii框架的RESTfulAPI功能得到了越来越多开发者的关注和喜爱,因为使用Yii框架可以非常方便地构建出高性能、易扩展的RESTful接口,为Web应用的开发提供了强有力的支持。RESTfulAPI简介RESTfulAPI是一种基于

如何优化和调整Linux系统的内核参数以提高性能 如何优化和调整Linux系统的内核参数以提高性能 Jun 29, 2023 am 10:24 AM

如何优化和调整Linux系统的内核参数以提高性能摘要:Linux操作系统是世界上最流行的操作系统之一,拥有强大的性能和灵活的配置选项。本文介绍了如何通过优化和调整Linux系统的内核参数来提高性能。从理解内核参数的含义开始,将探讨常见的性能调优技巧,包括内存管理、磁盘IO、网络和调度器等方面。通过这些优化和调整,用户可以更好地利用Linux系统,提升工作效率

Yii框架中间件:为应用程序提供多重数据存储支持 Yii框架中间件:为应用程序提供多重数据存储支持 Jul 28, 2023 pm 12:43 PM

Yii框架中间件:为应用程序提供多重数据存储支持介绍中间件(middleware)是Yii框架中的一个重要概念,它为应用程序提供了多重数据存储支持。中间件的作用类似于一个过滤器,它能够在应用程序的请求和响应之间插入自定义代码。通过中间件,我们可以对请求进行处理、验证、过滤,然后将处理后的结果传递给下一个中间件或最终的处理程序。Yii框架中的中间件使用起来非常

PHP中如何使用Yii框架 PHP中如何使用Yii框架 Jun 27, 2023 pm 07:00 PM

随着Web应用程序的快速发展,现代Web开发已成为一项重要技能。许多框架和工具可用于开发高效的Web应用程序,其中Yii框架就是一个非常流行的框架。Yii是一个高性能、基于组件的PHP框架,它采用了最新的设计模式和技术,提供了强大的工具和组件,是构建复杂Web应用程序的理想选择。在本文中,我们将讨论如何使用Yii框架来构建Web应用程序。安装Yii框架首先,

使用Yii框架实现网页缓存和页面分块的步骤 使用Yii框架实现网页缓存和页面分块的步骤 Jul 30, 2023 am 09:22 AM

使用Yii框架实现网页缓存和页面分块的步骤引言:在Web开发过程中,为了提高网站的性能和用户体验,常常需要对页面进行缓存和分块处理。Yii框架提供了强大的缓存和布局功能,可以帮助开发者快速实现网页缓存和页面分块,本文将介绍如何使用Yii框架进行网页缓存和页面分块的实现。一、网页缓存开启网页缓存在Yii框架中,可以通过配置文件来开启网页缓存。打开主配置文件co

使用Yii框架创建游戏攻略网站 使用Yii框架创建游戏攻略网站 Jun 21, 2023 pm 01:45 PM

近年来,随着游戏行业的快速发展,越来越多的玩家开始寻找游戏攻略来帮助游戏过关。因此,创建一个游戏攻略网站可以让玩家们更加方便地获取游戏攻略,同时也能为玩家提供更好的游戏体验。在创建这样一个网站时,我们可以使用Yii框架来进行开发。Yii框架是一个基于PHP编程语言的Web应用开发框架。它具有高效、安全、扩展性强等特点,可以为我们更快速、高效地创建一个游戏攻略

Yii框架中间件:为应用程序添加日志记录和调试功能 Yii框架中间件:为应用程序添加日志记录和调试功能 Jul 28, 2023 pm 08:49 PM

Yii框架中间件:为应用程序添加日志记录和调试功能【引言】在开发Web应用程序时,我们通常需要添加一些附加功能以提高应用的性能和稳定性。Yii框架提供了中间件的概念,使我们能够在应用程序处理请求之前和之后执行一些额外的任务。本文将介绍如何使用Yii框架的中间件功能来实现日志记录和调试功能。【什么是中间件】中间件是指在应用程序处理请求之前和之后,对请求和响应做

在Yii框架中使用控制器(Controllers)处理Ajax请求的方法 在Yii框架中使用控制器(Controllers)处理Ajax请求的方法 Jul 28, 2023 pm 07:37 PM

在Yii框架中,控制器(Controllers)扮演着处理请求的重要角色。除了处理常规的页面请求之外,控制器还可以用于处理Ajax请求。本文将介绍在Yii框架中处理Ajax请求的方法,并提供代码示例。在Yii框架中,处理Ajax请求可以通过以下步骤进行:第一步,创建一个控制器(Controller)类。可以通过继承Yii框架提供的基础控制器类yiiwebCo

See all articles