首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
13.1 初识Memcached
13.2 Memcached在Web中的应用
13.2.1 减小数据库查询的压力
13.2.2 对海量数据的处理
13.3 Memcached的安装及管理
13.3.1 安装Memcached软件
13.3.2 Memcached服务器的管理
13.4 使用Telnet作为Memcached的客户端管理
13.4.1 Telnet客户端连接Memcached服务器
13.4.2 连接Memcached服务器
13.4.3 基本的Memcached客户端命令
13.4.4 查看当前Memcached服务器的运行状态信息
13.4.5 数据管理指令
13.5 PHP的Memcached客户端扩展函数库
13.5.1 安装php_memcache.dll扩展函数库
13.5.2 相关扩展方法
13.5.3 实例应用
13.6 Yii2框架MemCache缓存组件
13.6.1 配置使用MemCache缓存组件
13.6.2 缓存API
13.6.3 MemCache实例
13.7 缓存依赖
13.7.1项目实现迭代十九:产品中心内容页中应用缓存依赖
13.8 片段缓存
13.8.1 片段缓存的起始和结束
13.8.2 小部件FragmentCache类部分构成
13.8.3 项目实现迭代二十:产品中心栏目实现片段缓存
13.9 页面缓存
13.10 项目实现迭代二十一:“关于我们”内容页中应用页面缓存
13.11 局部无缓存
13.12 Yii2框架其他缓存组件介绍
14.1 Apache服务器的日志
14.1.1 访问日志的格式
14.1.2 错误日志的格式
14.1.3 日志的定制
14.2 PHP日志
14.2.1 PHP配置文件“php.ini”
14.2.2 通过配置文件生成日志
14.2.3 通过方法记录日志到指定文件
14.2.4 错误信息记录到操作系统的日志里
14.3 Yii2框架的日志记录
14.3.1 记录日志消息
14.3.2 在配置文件中设置日志保存路径目标
15.1 关于URL
15.1.1 URL组成
15.1.2 良好的URL设计原则
15.2 初步认识Apache重写模块
15.3 Yii2框架的URL管理
15.3.1 创建URL
15.3.2 解析URL
15.3.3 URL模式
15.3.4 实现伪静态
15.3.5 带有正则表达式的URL规则
15.3.6 一个规则匹配多个路由
15.4 隐藏入口文件index.php
15.4.1 再次使用Apache重写模块
15.4.2 RewriteCond指令详解
15.4.3 Yii2框架创建URL时隐藏入口文件
当前位置:
首页>>
技术小册>>
Yii2框架从入门到精通(下)
小册名称:Yii2框架从入门到精通(下)
### 13.10 项目实现迭代二十一:“关于我们”内容页中应用页面缓存 在Web应用的开发过程中,性能优化是一个不可忽视的重要环节。随着网站访问量的增加,如何提升页面加载速度、减少服务器负载成为了开发者们必须面对的问题。Yii2框架作为一个高效、灵活的PHP开发框架,提供了多种优化手段,其中页面缓存(Page Caching)是提升网站性能的一种有效方式。在本章节中,我们将通过在实际项目中为“关于我们”(About Us)内容页应用页面缓存的实例,来详细探讨Yii2中页面缓存的实现方法及其带来的性能提升。 #### 13.10.1 理解页面缓存 页面缓存,顾名思义,就是将整个页面的输出(HTML内容)缓存起来,并在后续的请求中直接返回缓存的内容,而无需再次执行页面中的PHP代码、数据库查询等耗时操作。这种方式特别适用于那些内容不经常变化或变化后对用户影响不大的页面,如“关于我们”、“联系我们”等静态信息页面。 Yii2框架通过`yii\filters\HttpCache`过滤器或直接在控制器中使用`Yii::$app->response->cache()`方法来实现页面缓存。此外,Yii2还提供了片段缓存(Fragment Caching)和查询缓存(Query Caching)等更细粒度的缓存策略,但在此章节中,我们主要关注页面缓存。 #### 13.10.2 准备工作 在开始实现页面缓存之前,请确保你的Yii2项目已经配置好了缓存组件。Yii2支持多种缓存后端,如文件缓存、内存缓存(如Redis、Memcached)、数据库缓存等。你可以根据项目需求选择合适的缓存方式。在`config/web.php`配置文件中,你通常会看到类似以下的缓存组件配置: ```php 'components' => [ // ... 'cache' => [ 'class' => 'yii\caching\FileCache', ], // 或者使用Redis等 // 'cache' => [ // 'class' => 'yii\caching\RedisCache', // 'hostname' => 'localhost', // 'port' => 6379, // 'database' => 0, // ], // ... ], ``` #### 13.10.3 应用页面缓存到“关于我们”页面 ##### 1. 使用`HttpCache`过滤器 Yii2的`HttpCache`过滤器允许你基于HTTP头部(如`Last-Modified`、`ETag`)来控制缓存行为。对于简单的页面缓存,我们可以直接在控制器的行为(Behaviors)中配置它。 首先,在你的“关于我们”页面对应的控制器中(假设为`AboutController`),添加一个行为来启用页面缓存: ```php namespace app\controllers; use Yii; use yii\web\Controller; class AboutController extends Controller { public function behaviors() { return [ [ 'class' => 'yii\filters\HttpCache', 'only' => ['index'], // 只对index动作应用缓存 'lastModified' => function ($action, $params) { // 这里可以根据实际情况返回最后修改时间,比如读取文件或数据库的修改时间 // 示例:假设我们固定页面最后修改时间为一周前 return Yii::$app->formatter->asTimestamp('now - 1 week'); }, 'cacheDuration' => 3600, // 缓存持续时间,单位秒,这里设置为1小时 'cacheControlHeader' => 'public, max-age=3600', ], ]; } public function actionIndex() { // 页面内容处理逻辑 // ... return $this->render('index'); } } ``` 请注意,上述示例中的`lastModified`和`cacheDuration`是根据假设场景设置的。在实际应用中,你可能需要根据页面的实际更新频率来调整这些值。 ##### 2. 直接在控制器中设置缓存 除了使用`HttpCache`过滤器外,你还可以在控制器动作中直接使用`Yii::$app->response->cache()`方法来设置缓存。这种方法提供了更灵活的控制,但代码可能相对冗长一些。 ```php public function actionIndex() { // 检查是否已有缓存 $duration = 3600; // 缓存持续时间,单位秒 $dependency = null; // 缓存依赖,这里暂时不设置 if ($this->beginCache('aboutPage', ['duration' => $duration, 'dependency' => $dependency])) { // 页面内容处理逻辑 // ... // 页面内容渲染完成 $this->endCache(); } // 直接返回缓存的内容或渲染的页面 return $this->render('index'); } ``` 但请注意,上述`beginCache`和`endCache`的用法实际上更适用于片段缓存(Fragment Caching),对于整个页面的缓存,我们更推荐使用`HttpCache`过滤器。 #### 13.10.4 缓存验证与调试 在应用了页面缓存后,你需要验证缓存是否按预期工作。这通常涉及检查HTTP响应头中的`Cache-Control`、`ETag`、`Last-Modified`等字段,以及实际请求的响应时间。 此外,Yii2还提供了调试工具来帮助你查看缓存的状态。在开发环境中,你可以通过配置`response`组件的`on beforeSend`事件来添加自定义的响应头或日志信息,以便跟踪缓存的使用情况。 #### 13.10.5 注意事项 - **内容更新**:当页面内容更新时,确保缓存被清除或重新生成,以避免用户看到过时的信息。 - **敏感信息**:避免将包含用户特定数据(如用户ID、会话信息等)的页面进行缓存,因为这可能导致信息泄露。 - **性能考量**:虽然页面缓存可以显著提升性能,但过多的缓存可能会占用大量磁盘空间或内存,需要根据实际情况进行权衡。 #### 结语 通过在本章节中为“关于我们”内容页应用页面缓存,我们不仅提高了页面的加载速度,还减轻了服务器的负担。这是Yii2框架中性能优化策略的一个重要方面。随着项目的不断深入,你还可以探索更多Yii2提供的优化手段,如片段缓存、查询缓存、数据依赖等,以进一步提升你的Web应用的性能和用户体验。
上一篇:
13.9 页面缓存
下一篇:
13.11 局部无缓存
该分类下的相关小册推荐:
Yii2框架从入门到精通(上)
剑指PHP(从入门到进阶)
PHP合辑1-基础入门
Laravel(10.x)从入门到精通(十)
Laravel(10.x)从入门到精通(七)
PHP8入门与项目实战(6)
Swoole高性能框架-Hyperf
Laravel(10.x)从入门到精通(十五)
PHP高性能框架-Workerman
PHP合辑2-高级进阶
Magento2后端开发高级实战
Laravel(10.x)从入门到精通(九)