网页缓存
CodeIgniter 支持网页缓存,以实现最佳性能。
虽然 CodeIgniter 运行速度很快,但页面中显示的动态信息量会直接影响所消耗的服务器资源、内存以及 CPU 开销,进而影响页面加载速度。由于缓存页面会以完全渲染后的状态进行保存,因此启用缓存可获得极其接近静态网页的性能。
缓存如何工作?
缓存可按页面启用,并可设置页面在刷新前保持缓存的时间。
备注
按页面是指按 URI。自 v4.5.0 起,请求的 HTTP 方法也会被纳入考虑。这意味着如果 HTTP 方法不同,相同的 URI 将被分别缓存。
当页面第一次加载时,系统会使用当前配置的缓存引擎对页面进行缓存。在随后的页面加载中,将直接检索缓存并发送给用户的浏览器。
如果缓存已过期,系统会在发送到浏览器之前将其删除并刷新。
备注
Benchmark 标签不会被缓存,因此在启用缓存时仍可查看页面加载速度。
配置缓存
设置缓存引擎
在使用网页缓存之前,必须通过编辑 app/Config/Cache.php 来设置缓存引擎。详见 配置缓存。
设置 $cacheQueryString
可以通过 Config\Cache::$cacheQueryString 设置在生成缓存时是否包含查询字符串。
有效选项包括:
false:(默认值)禁用。不考虑查询字符串;对于具有相同 URI 路径但查询字符串不同的请求,将返回相同的缓存。true:启用,考虑所有查询参数。请注意,这可能会导致同一页面反复生成大量缓存。array:启用,但仅考虑指定的查询参数列表。例如:
['q', 'page']。
设置 $cacheStatusCodes
Added in version 4.7.0.
可以通过 Config\Cache::$cacheStatusCodes 控制允许缓存哪些 HTTP 响应状态码。
有效选项包括:
[]:(默认值)缓存所有 HTTP 状态码。这保持了向后兼容性,但可能会缓存临时的错误页面。[200]:(推荐)仅缓存成功的响应。这可以防止缓存应为临时性的错误页面(404、500 等)。状态码数组:仅缓存特定的状态码。例如:
[200, 404]:缓存成功的响应和未找到页面。[200, 404, 410]:缓存成功的响应和特定的错误代码。[200, 201, 202, 203, 204]:所有 2xx 成功响应。
警告
使用空数组 [] 可能会缓存临时的错误页面(404、500 等)。对于生产环境的应用,建议将其限制为 [200],以避免缓存本应是临时性的错误。例如,缓存的 404 页面即使在资源创建后也会保持缓存状态,直到缓存过期。
备注
无论此项如何设置,DownloadResponse 和 RedirectResponse 实例永远不会被 PageCache 过滤器缓存。
启用缓存
若要启用缓存,请在任何控制器方法中加入以下标签:
<?php
$this->cachePage($n);
其中 $n 是希望页面在两次刷新之间保持缓存的 秒数。
上述标签可以放在方法内的任何位置。它不受出现顺序的影响,因此可以放在任何认为逻辑合理的地方。一旦标签就位,页面就会开始被缓存。
重要
如果更改了可能影响输出的配置选项,必须手动删除缓存。
删除缓存
如果不再希望缓存某个页面,可以移除缓存标签,该页面在过期后将不再刷新缓存。
备注
移除标签不会立即删除缓存。它必须正常过期。