uchome 缓存生成
一。uchome的缓存目录 ---------data此目录要有777权限
(1)模板文件缓存机制
1:在要显示的页面通过include template($name) 语句来包含被编译后的模板文件
2:template($name)函数解释
3:模板文件编译:parse_template($tpl)
传递的参数:为不包含文件类型后缀的完整文件路径
函数功能:替换掉模板标签,使其编译成PHP代码
(2)模块数据缓存
1:管理员在后台可以设置是否进行模块缓存,以及文本模式缓存还是储存到数据库,同时还可以设置时储存到一个表还是多个表中。
若选在储存在数据库中,则被保存于cache cahe1 chae2 这些表中,若储存在文本中,则文本被存放于/data/block_cache 中。
2:设置数据被储存在config表中,一键值对的形式储存
3:所有模块缓存的更新周期是在代码中事先设定好的不能设置的,只能通过后台手动一次性的更新模块缓存,
4:当手动更新缓存之后,通过block_data_cache();函数进行缓存更新,也就是清除所有模块缓存
(3)模块缓存
1:在后台数据调用功能处设置添加模块
2:之后会生成一个模块调用代码
3:模块数据被储存在block表中
(4)系统配置缓存
1:管理员在后台设置好系统配置
2:数据被写入config表中 ,一键值对的形式存储
3:在common.php文件中,检测系统配置缓存文件dada_config.php是否存在,若存在则调用不存在则生成系统配置缓存文件。
$_SCONFIG数组用来储存系统配置数据的。
二。缓存文件是通过source/function_cache.php里的函数来生成的。例如
//更新配置文件
function config_cache($updatedata=true) {
global $_SGLOBAL; $_SCONFIG = array();
$query = $_SGLOBAL['db']->query('SELECT * FROM '.tname('config'));
while ($value = $_SGLOBAL['db']->fetch_array($query)) {
if($value['var'] == 'privacy') {
$value['datavalue'] = empty($value['datavalue'])?array():unserialize($value['datavalue']);
}
$_SCONFIG[$value['var']] = $value['datavalue'];
}
cache_write('config', '_SCONFIG', $_SCONFIG); if($updatedata) {
$setting = data_get('setting');
$_SGLOBAL['setting'] = empty($setting)?array():unserialize($setting);
cache_write('setting', "_SGLOBAL['setting']", $_SGLOBAL['setting']); $mail = data_get('mail');
$_SGLOBAL['mail'] = empty($mail)?array():unserialize($mail);
cache_write('mail', "_SGLOBAL['mail']", $_SGLOBAL['mail']); $spam = data_get('spam');
$_SGLOBAL['spam'] = empty($spam)?array():unserialize($spam);
cache_write('spam', "_SGLOBAL['spam']", $_SGLOBAL['spam']);
}
}
三。cache_write
//写入
function cache_write($name, $var, $values) {
$cachefile = S_ROOT.'./data/data_'.$name.'.php';
$cachetext = "<?php\r\n".
"if(!defined('IN_UCHOME')) exit('Access Denied');\r\n".
'$'.$var.'='.arrayeval($values).
"\r\n?>";
if(!swritefile($cachefile, $cachetext)) {
exit("File: $cachefile write error.");
}
}
四。其他
- config_cache() 更新配置信息缓存,生成缓存文件data_config.php
- usergroup_cache() 更新用户组缓存,生成缓存文件data_usergroup.php
- profilefield_cache() 更新用户栏目缓存,生成缓存文件data_profilefield.php
- profield_cache() 更新群组栏目缓存,生成缓存文件data_profield.php
- censor_cache() 更新词语屏蔽缓存,生成缓存文件data_censor.php
- creditrule_cache() 更新积分规则,生成缓存文件data_creditrule.php
- ad_cache() 更新广告缓存,生成缓存文件data_ad.php
- task_cache() 更新用户向导任务,生成缓存文件data_task.php
- block_cache() 更新模块,生成缓存文件data_block.php
- tpl_cache() 更新模板缓存,清空模板缓存文件夹/data/tpl_cache/下所有文件使模板缓存重新生成
- block_data_cache() 更新模块缓存,清空模板缓存数据使缓存重新生成
- userapp_cache() 更新MYOP默认应用,生成缓存文件data_userapp.php
- app_cache() 更新应用名,生成缓存文件data_app.php
五。使用缓存
从上面分析可看出,缓存数据文件其实就是php代码文件,直接引入执行。因而我们的缓存使用也就很方便了,只需将缓存文件使用
include/include_once/require/require_once等函数引入进来即可使用,调用对应的变量来获取缓存的数据。
但为了保证缓存的存在,使用时最好加一个检测;如果缓存数据不存在,则先生成一遍缓存数据。综合起来,缓存的代码参考如下:
if(!@include_once(S_ROOT.'./data/data_usergroup.php')) {
include_once(S_ROOT.'./source/function_cache.php');
usergroup_cache();
}
http://localhost/uchome/invite.php?u=3&c=f1afb01b1ca3808c
uchome 缓存生成的更多相关文章
- php缓存生成及更新实现参考哦
<?php //如果在find/findAll里传入了参数,则该参数即为key ORM::factory('article')->where('user_id', '=', '2')-&g ...
- 使用 Dockerfile 文件但是不使用缓存生成镜像
前一段时候使用 Dockerfile 重新部署 NetCore3.1 项目的时候很顺利,由来由于一些原因,我把以前的镜像删除,如果我们大家继续使用 docker build 命令去生成镜像的话就会报 ...
- PHP使用缓存生成静态页面
http://www.cnblogs.com/lh460795/archive/2013/04/06/3003105.html 在apache / bin/ab.exe 可以做压力测试,该工具可以模 ...
- 使用SuperMap Deskpro 6R.NET生成地图缓存
使用说明 “地图缓存”按钮,用来对二维地图数据生成缓存文件,优化地图的浏览效果. 操作步骤 1.单击功能区>“数据”选项卡>“生成缓存”组中的“地图缓存”按钮. 2.弹出如下所示“生成地图 ...
- 利用GeoWebCache实现WebGIS地形图展示的缓存优化
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 在WebGIS中,影像金字塔是一个很重要的概念.在WebGI ...
- OpenGL ES为缓存提供数据的7个步骤
OpenGL ES为缓存提供数据的7个步骤: 1.生成glGenBuffers()——请求OpenGL ES为图形处理器控制的缓存生成一个独一无二的标识符. 2.绑定glBindBuffer()——告 ...
- MySQL 缓存 Query Cache
QueryCache(下面简称QC)是根据SQL语句来cache的.一个SQL查询如果以select开头,那么MySQL服务器将尝试对其使 用QC.每个Cache都是以SQL文本作为key来存的.在应 ...
- levelDB缓存实现
leveldb的缓存机制 leveldb采用LRU机制, 利用键的哈希值前n位作为索引, 将要插入的键值对分派到指定的缓存区, 当缓存区的使用率大于总容量后, 优先淘汰最近最少使用的缓存, 独立的缓存 ...
- 【MyBatis源码解析】MyBatis一二级缓存
MyBatis缓存 我们知道,频繁的数据库操作是非常耗费性能的(主要是因为对于DB而言,数据是持久化在磁盘中的,因此查询操作需要通过IO,IO操作速度相比内存操作速度慢了好几个量级),尤其是对于一些相 ...
随机推荐
- [转]JVM运行时内存结构
[转]http://www.cnblogs.com/dolphin0520/p/3783345.html 目录[-] 1.为什么会有年轻代 2.年轻代中的GC 3.一个对象的这一辈子 4.有关年轻代的 ...
- 学习 TList 类的实现[1]
最近整理了一些函数列表, 算是一个宏观的安排; 等以后再碰到一些函数时就可以放置的更有次序一些. 我对函数与类的理解是: 函数是一个功能模块, 类是一个更强大的功能模块; Delphi 已经提供了很多 ...
- Spring学习笔记——Spring依赖注入原理分析
我们知道Spring的依赖注入有四种方式,各自是get/set方法注入.构造器注入.静态工厂方法注入.实例工厂方法注入 以下我们先分析下这几种注入方式 1.get/set方法注入 public cla ...
- VC++ 使用MSSOAP访问WebService天气服务(客户端开发)
绪论 本文介绍使用VC++编程实现访问天气Web服务的简单实例(例子来源于网络). Web天气服务 http://www.webxml.com.cn/WebServices/WeatherWebSer ...
- CSS background 之设置图片为背景技巧
首先先来看看background有那些值: 可以按顺序设置如下属性(可点击进入相应的css手册查看使用):background-color 背景颜色background-image 背景图片backg ...
- NHibernate初学五之关联一对多关系
1:创建两张表T_Country.T_Person:其中T_Person表中有一个CountryID对应T_Country的ID,一个Country可以对应多个Person CREATE TABLE ...
- 【RF库Collections测试】Dictionary Should Not Contain Value
Name:Dictionary Should Not Contain ValueSource:Collections <test library>Arguments:[ dictionar ...
- 【RF库Collections测试】Convert To List
Name:Convert To ListSource:Collections <test library>Arguments:[ item ]Converts the given `ite ...
- LVS+keeplived+nginx+tomcat高可用、高性能jsp集群
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://kerry.blog.51cto.com/172631/557749 #!/bin ...
- Android 设置wifi共享电脑服务器资源
其实win7本身就自带无线热点的功能,按下面的方法设置. 开启windows 7的隐藏功能:虚拟WiFi和SoftAP(即虚拟无线AP),就可以让电脑变成无线路由器,实现共享上网,节省网费和路由器购买 ...