Table of Contents
1. Enable APC extension
2. Disable debug mode
4. Use caching technology
5. Database optimization
6. Minimize script files
Home Backend Development PHP Tutorial Yii Framework Official Guide Series 52 - Special Topic: Performance Tuning

Yii Framework Official Guide Series 52 - Special Topic: Performance Tuning

Feb 16, 2017 am 10:00 AM



#The performance of web applications is affected by many factors. Database access, file system operations, network bandwidth, etc. are all potential influencing factors. Yii has reduced the performance impact of frameworks in various aspects. But there are still many places in user applications that can be improved to improve performance.

1. Enable APC extension

Enabling PHP APC extension is probably the easiest way to improve the overall performance of an application. This extension caches and optimizes PHP intermediate code and avoids the time spent reparsing PHP scripts for each new request.

2. Disable debug mode

Disabling debug mode is another easy way to improve performance. If the constant YII_DEBUG is set to true, this Yii application will run in debug mode. Debug mode is useful during the development phase, but it affects performance because some components cause additional system overhead. For example, the message logger will log additional debugging information for each logged message.

3. Use yiilite.php

When the PHP APC extension is enabled, we can replace yii.php with another one named yiilite.php boot file to further improve the performance of Yii-powered applications.

The file yiilite.php is included with every Yii distribution. It is a merged file of some commonly used Yii class files. In the file, comments and trace statements are stripped. Therefore, using yiilite.php will reduce the number of files being referenced and avoid executing trace statements.

Note that using yiilite.php without enabling APC will actually reduce performance because yiilite.php contains some classes that are not required for every request. This will take extra parsing time. Also note that using yiilite.php will be slower on some server configurations, even if APC is turned on. It's best to run a benchmark using hello world from the demo to decide whether to use yiilite.php.

4. Use caching technology

As mentioned in the Caching chapter, Yii provides several caching solutions that can effectively improve performance. If the generation of some data takes a long time, we can use the data cache method to reduce the frequency of data generation; if a part of the page remains relatively fixed, we can use the fragment cache method to reduce its rendering frequency; if an entire page remains relatively fixed, Fixed, we can use page caching method to save the cost of page rendering.

If the application is using Active Record, we should turn on the data structure cache to save time in parsing the data table structure. This can be accomplished by setting the CDbConnection::schemaCachingDuration property to a value greater than 0.

In addition to these application-level caching technologies, we can also use service-level caching solutions to improve application performance. In fact, the PHP APC cache we described earlier falls into this category. There are also other server technologies, such as Zend Optimizer, eAccelerator, Squid, and others are not listed one by one.

5. Database optimization

Retrieving data from the database is often the main bottleneck of a network application. Although using caching can reduce performance penalties, it does not solve the underlying problem. When the database contains a large amount of data and the cached data is invalid, obtaining the latest data will be very resource-intensive without good database and query optimization design.

Smartly design indexes in a database. An index can make SELECT queries faster, but it will make INSERT, UPDATE or DELETE queries slower.

For complex queries, it is recommended to create a database view for it, rather than generating query statements through PHP code and letting the DBMS parse them repeatedly.

Don’t abuse Active Record. Although Active Record is good at modeling data in an OOP style, it actually reduces performance because it requires creating one or several objects to represent each query result. For data-intensive applications, using a DAO or database interface under the hood would be a better choice.

Last but not least, use LIMIT in your SELECT query. This will avoid fetching too much data from the database and exhausting the memory allocated for PHP.

6. Minimize script files

Complex pages often require the introduction of many external JavaScript and CSS files. Because each file will cause an extra round trip, we should minimize the number of script files by combining files. We should also consider reducing the size of each script file to reduce network transfer time. There are many tools to help improve both aspects.

For a Yii generated page, the exception is some script files rendered by components that we do not want to change (such as Yii core components, third-party components). To minimize these script files, we need two steps.

Note: The scriptMap features described below have been supported since version 1.0.3.

First, declare that the script is minimized by configuring the scriptMap attribute of the application component clientScript. This can be done in the application configuration or configured in code. For example,


$cs=Yii::app()->clientScript;
$cs->scriptMap=array(
    'jquery.js'=>'/js/all.js',
    'jquery.ajaxqueue.js'=>'/js/all.js',
    'jquery.metadata.js'=>'/js/all.js',
    ......
);
Copy after login

What the above code does is map these JavaScript files to the URL /js/all. js. If any of these JavaScript files need to be imported by some component, Yii will import this URL (once) instead of each individual script file.

Secondly, we need to use some tool to combine (and compress) the JavaScript files into a single file and save it as js/all.js.

The same technique also works for CSS files.

With the help of Google AJAX Libraries API we can improve page loading speed. For example, we can import jquery.js from Google's servers instead of our own. To do this, we first configure scriptMap as follows,


$cs=Yii::app()->clientScript;
$cs->scriptMap=array(
    'jquery.js'=>false,
    'jquery.ajaxqueue.js'=>false,
    'jquery.metadata.js'=>false,
    ......
);
Copy after login

by mapping these false for script files, we prevent Yii from generating code that imports these files. As an alternative, we write the following code in the page to directly import the file from 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>
Copy after login

The above is the Yii Framework Official Guide Series 52 - Special Topic: Performance Tuning Content, more related content Please pay attention to the PHP Chinese website (www.php.cn)!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

RESTful API development in Yii framework RESTful API development in Yii framework Jun 21, 2023 pm 12:34 PM

Yii is a high-performance MVC framework based on PHP. It provides a very rich set of tools and functions to support the rapid and efficient development of web applications. Among them, the RESTful API function of the Yii framework has attracted more and more attention and love from developers, because using the Yii framework can easily build high-performance and easily scalable RESTful interfaces, providing strong support for the development of web applications. . Introduction to RESTfulAPI RESTfulAPI is a

How to optimize and tune the kernel parameters of a Linux system to improve performance How to optimize and tune the kernel parameters of a Linux system to improve performance Jun 29, 2023 am 10:24 AM

How to optimize and adjust the kernel parameters of a Linux system to improve performance Summary: The Linux operating system is one of the most popular operating systems in the world, with powerful performance and flexible configuration options. This article describes how to improve performance by optimizing and adjusting the kernel parameters of your Linux system. Starting from understanding the meaning of kernel parameters, we will explore common performance tuning techniques, including memory management, disk IO, network and scheduler. Through these optimizations and adjustments, users can better utilize the Linux system and improve work efficiency.

Yii framework middleware: providing multiple data storage support for applications Yii framework middleware: providing multiple data storage support for applications Jul 28, 2023 pm 12:43 PM

Yii framework middleware: providing multiple data storage support for applications Introduction Middleware (middleware) is an important concept in the Yii framework, which provides multiple data storage support for applications. Middleware acts like a filter, inserting custom code between an application's requests and responses. Through middleware, we can process, verify, filter requests, and then pass the processed results to the next middleware or final handler. Middleware in the Yii framework is very easy to use

How to use Yii framework in PHP How to use Yii framework in PHP Jun 27, 2023 pm 07:00 PM

With the rapid development of web applications, modern web development has become an important skill. Many frameworks and tools are available for developing efficient web applications, among which the Yii framework is a very popular framework. Yii is a high-performance, component-based PHP framework that uses the latest design patterns and technologies, provides powerful tools and components, and is ideal for building complex web applications. In this article, we will discuss how to use Yii framework to build web applications. Install Yii framework first,

Steps to implement web page caching and page chunking using Yii framework Steps to implement web page caching and page chunking using Yii framework Jul 30, 2023 am 09:22 AM

Steps to implement web page caching and page chunking using the Yii framework Introduction: During the web development process, in order to improve the performance and user experience of the website, it is often necessary to cache and chunk the page. The Yii framework provides powerful caching and layout functions, which can help developers quickly implement web page caching and page chunking. This article will introduce how to use the Yii framework to implement web page caching and page chunking. 1. Turn on web page caching. In the Yii framework, web page caching can be turned on through the configuration file. Open the main configuration file co

Create a game guide website using Yii framework Create a game guide website using Yii framework Jun 21, 2023 pm 01:45 PM

In recent years, with the rapid development of the game industry, more and more players have begun to look for game strategies to help them pass the game. Therefore, creating a game guide website can make it easier for players to obtain game guides, and at the same time, it can also provide players with a better gaming experience. When creating such a website, we can use the Yii framework for development. The Yii framework is a web application development framework based on the PHP programming language. It has the characteristics of high efficiency, security, and strong scalability, and can help us create a game guide more quickly and efficiently.

Yii Framework Middleware: Add logging and debugging capabilities to your application Yii Framework Middleware: Add logging and debugging capabilities to your application Jul 28, 2023 pm 08:49 PM

Yii framework middleware: Add logging and debugging capabilities to applications [Introduction] When developing web applications, we usually need to add some additional features to improve the performance and stability of the application. The Yii framework provides the concept of middleware that enables us to perform some additional tasks before and after the application handles the request. This article will introduce how to use the middleware function of the Yii framework to implement logging and debugging functions. [What is middleware] Middleware refers to the processing of requests and responses before and after the application processes the request.

How to use controllers to handle Ajax requests in the Yii framework How to use controllers to handle Ajax requests in the Yii framework Jul 28, 2023 pm 07:37 PM

In the Yii framework, controllers play an important role in processing requests. In addition to handling regular page requests, controllers can also be used to handle Ajax requests. This article will introduce how to handle Ajax requests in the Yii framework and provide code examples. In the Yii framework, processing Ajax requests can be carried out through the following steps: The first step is to create a controller (Controller) class. You can inherit the basic controller class yiiwebCo provided by the Yii framework

See all articles