正在加载文档...
iCMS:cahce 缓存标签
iCMS 缓存标签技术文档
缓存标签 (cache)
缓存标签用于在模板中存储和获取缓存数据。
iCMS:cache 标签
支持参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| key | 字符串 | - | 缓存键名(必填) |
| value | 混合类型 | - | 要缓存的值 |
| time | 整数 | 0 | 缓存时间(秒),0表示永久 |
| skey | 字符串 | null | 二级缓存键名 |
返回值
- 设置缓存时:无返回值
- 获取缓存时:返回缓存的数据,如果缓存不存在则返回 false
使用示例
<!-- 设置缓存 -->
<!--{iCMS:cache key="home_data" value="$home_data" time="3600"}-->
<!-- 获取缓存 -->
<!--{iCMS:cache key="home_data"}-->
<!--{if $cache}-->
<!-- 使用缓存数据 -->
<!--{foreach key="key" value="value" from="$cache"}-->
<div><!--{$value.title}--></div>
<!--{/foreach}-->
<!--{/if}-->
常见应用场景
1. 缓存首页数据
<!--{iCMS:cache key="home_page" time="1800"}-->
<!--{if !$cache}-->
<!--{iCMS:article row="10" orderby="hot"}-->
<!--{iCMS:cache key="home_page" value="$article" time="1800"}-->
<!--{else}-->
<!--{assign var="article" value="$cache"}-->
<!--{/if}-->
<div class="article-list">
<!--{foreach key="key" value="value" from="$article"}-->
<div class="article-item">
<h3><!--{$value.title}--></h3>
<p><!--{$value.description}--></p>
</div>
<!--{/foreach}-->
</div>
2. 缓存分类数据
<!--{iCMS:cache key="category_tree"}-->
<!--{if !$cache}-->
<!--{iCMS:category pid="0"}-->
<!--{iCMS:cache key="category_tree" value="$category"}-->
<!--{else}-->
<!--{assign var="category" value="$cache"}-->
<!--{/if}-->
<ul class="category-list">
<!--{foreach key="key" value="value" from="$category"}-->
<li><a href="<!--{$value.url}-->"><!--{$value.name}--></a></li>
<!--{/foreach}-->
</ul>
3. 缓存用户数据
<!--{iCMS:cache key="user_$id" skey="profile"}-->
<!--{if !$cache}-->
<!--{iCMS:user id="$id"}-->
<!--{iCMS:cache key="user_$id" value="$user" skey="profile" time="600"}-->
<!--{else}-->
<!--{assign var="user" value="$cache"}-->
<!--{/if}-->
<div class="user-profile">
<img src="<!--{$user.avatar}-->" alt="<!--{$user.nickname}-->">
<h2><!--{$user.nickname}--></h2>
</div>
性能优化建议
-
合理设置缓存时间
- 频繁更新的数据设置较短的缓存时间
- 不经常变化的数据可以设置较长的缓存时间
- 永久缓存需要在数据更新时手动清理
-
使用二级缓存
- 通过 skey 参数可以实现多级缓存
- 便于管理和清理特定类型的缓存
-
避免缓存过大数据
- 建议只缓存必要的数据
- 对于大数据考虑分片缓存
调试技巧
- 检查缓存是否生效
<!--{iCMS:cache key="test" value="当前时间:$time"}-->
<!--{$cache}-->
- 清理特定缓存
Cache::delete('cache_key');
- 使用调试模式
<!--{iCMS:cache key="debug_data" debug="1"}-->
注意事项
- key 参数为必填项,否则将返回 false
- 缓存时间单位为秒,0 表示永久缓存
- 使用 skey 可以实现多级缓存,便于管理
- 建议为缓存键名添加前缀,避免冲突
- 在更新数据时注意及时清理相关缓存