mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-03 22:32:40 +08:00
Merge pull request #6815 from softark/docs-guide-tutorial-performance
docs/guide/tutorial-performance-tuning.md better wordings[ci skip]
This commit is contained in:
@ -14,7 +14,7 @@ Preparing environment
|
|||||||
|
|
||||||
A well configured environment to run PHP application really matters. In order to get maximum performance:
|
A well configured environment to run PHP application really matters. In order to get maximum performance:
|
||||||
|
|
||||||
- Always use latest stable PHP version. Each major release brings significant performance improvements and reduced
|
- Always use the latest stable PHP version. Each major release brings significant performance improvements and reduced
|
||||||
memory usage.
|
memory usage.
|
||||||
- Use [APC](http://ru2.php.net/apc) for PHP 5.4 and less or [Opcache](http://php.net/opcache) for PHP 5.5 and more. It
|
- Use [APC](http://ru2.php.net/apc) for PHP 5.4 and less or [Opcache](http://php.net/opcache) for PHP 5.5 and more. It
|
||||||
gives a very good performance boost.
|
gives a very good performance boost.
|
||||||
@ -26,8 +26,8 @@ Preparing framework for production
|
|||||||
|
|
||||||
First thing you should do before deploying your application to production environment
|
First thing you should do before deploying your application to production environment
|
||||||
is to disable debug mode. A Yii application runs in debug mode if the constant
|
is to disable debug mode. A Yii application runs in debug mode if the constant
|
||||||
`YII_DEBUG` is defined as `true` in `index.php` so to disable debug the following
|
`YII_DEBUG` is defined as `true` in `index.php`.
|
||||||
should be in your `index.php`:
|
So, in order to disable debug mode, the following should be in your `index.php`:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
defined('YII_DEBUG') or define('YII_DEBUG', false);
|
defined('YII_DEBUG') or define('YII_DEBUG', false);
|
||||||
@ -43,7 +43,7 @@ Enabling the PHP opcode cache improves any PHP application performance and lower
|
|||||||
memory usage significantly. Yii is no exception. It was tested with both
|
memory usage significantly. Yii is no exception. It was tested with both
|
||||||
[PHP 5.5 OPcache](http://php.net/manual/en/book.opcache.php) and
|
[PHP 5.5 OPcache](http://php.net/manual/en/book.opcache.php) and
|
||||||
[APC PHP extension](http://php.net/manual/en/book.apc.php). Both cache
|
[APC PHP extension](http://php.net/manual/en/book.apc.php). Both cache
|
||||||
and optimize PHP intermediate code and avoid the time spent in parsing PHP
|
optimize PHP intermediate code and avoid the time spent in parsing PHP
|
||||||
scripts for every incoming request.
|
scripts for every incoming request.
|
||||||
|
|
||||||
### Turning on ActiveRecord database schema caching
|
### Turning on ActiveRecord database schema caching
|
||||||
@ -90,7 +90,7 @@ In order to learn how it can be achieved, refer to [assets](structure-assets.md)
|
|||||||
### Using better storage for sessions
|
### Using better storage for sessions
|
||||||
|
|
||||||
By default PHP uses files to handle sessions. It is OK for development and
|
By default PHP uses files to handle sessions. It is OK for development and
|
||||||
small projects but when it comes to handling concurrent requests it's better to
|
small projects. But when it comes to handling concurrent requests, it's better to
|
||||||
switch to another storage such as database. You can do so by configuring your
|
switch to another storage such as database. You can do so by configuring your
|
||||||
application via `config/web.php`:
|
application via `config/web.php`:
|
||||||
|
|
||||||
@ -101,11 +101,11 @@ return [
|
|||||||
'session' => [
|
'session' => [
|
||||||
'class' => 'yii\web\DbSession',
|
'class' => 'yii\web\DbSession',
|
||||||
|
|
||||||
// Set the following if want to use DB component other than
|
// Set the following if you want to use DB component other than
|
||||||
// default 'db'.
|
// default 'db'.
|
||||||
// 'db' => 'mydb',
|
// 'db' => 'mydb',
|
||||||
|
|
||||||
// To override default session table set the following
|
// To override default session table, set the following
|
||||||
// 'sessionTable' => 'my_session',
|
// 'sessionTable' => 'my_session',
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
@ -114,7 +114,7 @@ return [
|
|||||||
|
|
||||||
You can use `CacheSession` to store sessions using cache. Note that some
|
You can use `CacheSession` to store sessions using cache. Note that some
|
||||||
cache storage such as memcached has no guarantee that session data will not
|
cache storage such as memcached has no guarantee that session data will not
|
||||||
be lost leading to unexpected logouts.
|
be lost, and it would lead to unexpected logouts.
|
||||||
|
|
||||||
If you have [Redis](http://redis.io/) on your server, it's highly recommended as session storage.
|
If you have [Redis](http://redis.io/) on your server, it's highly recommended as session storage.
|
||||||
|
|
||||||
@ -132,7 +132,7 @@ If a whole page remains relative static, we can use the page caching approach to
|
|||||||
save the rendering cost for the whole page.
|
save the rendering cost for the whole page.
|
||||||
|
|
||||||
|
|
||||||
### Leveraging HTTP to save processing time and bandwidth
|
### Leveraging HTTP caching to save processing time and bandwidth
|
||||||
|
|
||||||
Leveraging HTTP caching saves both processing time, bandwidth and resources significantly. It can be implemented by
|
Leveraging HTTP caching saves both processing time, bandwidth and resources significantly. It can be implemented by
|
||||||
sending either `ETag` or `Last-Modified` header in your application response. If browser is implemented according to
|
sending either `ETag` or `Last-Modified` header in your application response. If browser is implemented according to
|
||||||
@ -211,7 +211,7 @@ In the view you should access fields of each individual record from `$posts` as
|
|||||||
|
|
||||||
```php
|
```php
|
||||||
foreach ($posts as $post) {
|
foreach ($posts as $post) {
|
||||||
echo $post['title']."<br>";
|
echo $post['title'] . "<br>";
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -225,12 +225,12 @@ request later if there's no need for immediate response.
|
|||||||
|
|
||||||
There are two common ways to achieve it: cron job processing and specialized queues.
|
There are two common ways to achieve it: cron job processing and specialized queues.
|
||||||
|
|
||||||
In the first case we need to save data which processing we want to do later to persistent storage
|
In the first case we need to save the data that we want to process later to a persistent storage
|
||||||
such as database. A [console command](tutorial-console.md) that is run regularly via cron job queries
|
such as database. A [console command](tutorial-console.md) that is run regularly via cron job queries
|
||||||
database and processes data if there's any.
|
database and processes data if there's any.
|
||||||
|
|
||||||
The solution is OK for most cases but has one significant drawback. We aren't aware if there's data to
|
The solution is OK for most cases but has one significant drawback. We aren't aware if there's data to
|
||||||
process before we query database so we're either querying database quite often or have a slight delay
|
process before we query database, so we're either querying database quite often or have a slight delay
|
||||||
between each data processing.
|
between each data processing.
|
||||||
|
|
||||||
This issue could be solved by queue and job servers such RabbitMQ, ActiveMQ, Amazon SQS and more.
|
This issue could be solved by queue and job servers such RabbitMQ, ActiveMQ, Amazon SQS and more.
|
||||||
|
|||||||
Reference in New Issue
Block a user