YII2的高效篇

1.延迟加载

只有在类被使用的时候才会被加载

实现方式:

spl_autoload_register()

可以看到YII的项目的入口文件加载了这个文件。

// 引入 vendor 中的 autoload.php 文件,会基于 composer 的机制自动加载类require(__DIR__.'/../vendor/autoload.php');

2.类的映射表机制

创建类的映射表加快类的加载

Yii::$classMap = ['app/test/Test'=>'/var/www/basic/webtest/Test.php'];

3.组件的延迟加载

组件只有在使用的时候才会被加载

4.缓存机制

1. 数据缓存

缓存的基本方法:

缓存依赖:

yii\caching\DbDependency:如果指定 SQL 语句的查询结果发生了变化,则依赖改变。

yii\caching\ExpressionDependency:如果指定的 PHP 表达式执行结果发生变化,则依赖改变。

yii\caching\FileDependency:如果文件的最后修改时间发生变化,则依赖改变。

缓存示例:

2. 片段缓存

片段缓存指的是缓存页面内容中的某个片段。例如,一个页面显示了逐年销售额的摘要表格, 可以把表格缓存下来,以消除每次请求都要重新生成表格 的耗时。片段缓存是基于数据缓存实现的。

关于缓存嵌套:外层的失效时间应该短于内层,外层的依赖条件应该低于内层,以确保最小的片段,返回的是最新的数据。

3. 页面缓存

页面缓存指的是在服务器端缓存整个页面的内容。随后当同一个页面 被请求时,内容将从缓存中取出,而不是重新生成。


页面缓存和片段缓存极其相似。它们都支持 duration,dependencies, variations 和 enabled 配置选项。它们的主要区别是页面缓存是由过滤器实现, 而片段缓存则是一个小部件。

4. HTTP缓存

yii\filters\HttpCache::lastModified //返回最后修改的时间戳是否有变化

yii\filters\HttpCache::etagSeed //返回的字符串是否有变化

如果没有变化系统会返回304的状态码,提示浏览器使用缓存中的数据。

etagSeed>lastModified  如果两者同时使用的话,只有当etagSeed改变的时候,系统才会认为数据有变化

你可能感兴趣的:(YII2的高效篇)