zoukankan
html css js c++ java
PHPCMS 整站代码分析讲解(五)
PHPCMS
整站代码分析讲解(五)
现在开始讲
index.php
首页文件
.
基本来说
PHPCMS
的加载到显示操作的整个流程都分析完了
.
大家看一遍后
.
还要整体的来看来分析
.
慢慢体会
.
把些好的思想和思路实现到自己以后的项目里
.
我相信大家都会变得很强的
.
记得
:
程序是死的
,
人是活的
.
有实现思路一切都好办了
.
[Copy to clipboard]
[ - ]
CODE: <?php /** 代码分析版权所有:逆雪寒 */ require './include/common.inc.php'; /** 看
common.inc.php
核心启动文件我们已经讲解完了。应该都明白了吧
*/ if($PHPCMS['ishtml'] == 1 && file_exists(PHPCMS_ROOT.'/'.$PHPCMS['index'].'.'.$PHPCMS['fileext'])) { header('location:'.$PHPCMS['index'].'.'.$PHPCMS['fileext']); exit; } /** phpcms
允许在后台生静态和使用静态
,
这里就是先判断
$PHPCMS['ishtml'](
从文本缓存弄过来的。应该知道了吧
)
是否为
1
就是开启了。和这个 静态的
html
文件是否存在。
*/ $channels = array(); $channels['article'] = $channels['down'] = $channels['picture'] = $channels['info']= array(); foreach($CHANNEL as $v) { $module = $v['module']; if($v['islink'] == 0 && $MODULE[$module]['iscopy'] == 1) $channels[$module][$v['channelid']] = $v; } //
获取频道模块的信息。都是从缓存中取的
$head['title'] = $PHPCMS['seo_title']; $head['keywords'] = $PHPCMS['seo_keywords']; $head['description'] = $PHPCMS['seo_description']; //
这个是网页的
SEO (title,keywords,description)
信息。这个写好了。网络蜘蛛会找你哦。
include template('phpcms', 'index'); // template()
函数是模板函数。这个就是这章的主题。往下会讲模板引擎的制作
,
大家都看到
include
了吧。它的参数是文件地址。那么就可以想到
template()
函数其实就是
//
模板编译后的
PHP
文件地址。
phpcache(); /** 这个函数厉害了。用来自动生缓存页的(这个是页面缓存和数据库信息的文本缓存不是一会事)
,
页面缓存,就是把你所看的页自动生成
XX.html
静态页。请注意前面代码。是不是有个
header()
跳转到静态页呀。
那静态页那里来的?就是给这个函数弄出来的。自动静态化了其实。
@@
是不是很简单呢。上菜先:
function phpcache($is_js = 0) { global $CONFIG,$cachefiledir,$cachefile; if(!$is_js && $CONFIG['phpcache'] != '2') return FALSE; $contents = ob_get_clean(); if($is_js) $contents = strip_js($contents); if($CONFIG['phpcache'] == '2' && $cachefiledir && $cachefile) { dir_create($cachefiledir); file_put_contents($cachefile, $contents); @chmod($cachefile, 0777); } header('Expires: Mon, 26 Jul 2000 05:00:00 GMT');
告诉浏览器此页面的过期时间
(
用格林威治时间表示
)
,只要是已经过去的日期即可
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
告诉服务器本页最后修改日期。目的就是强迫浏览器获取最新资料
header('Cache-Control: no-cache, must-revalidate');
这句
session_cache_limiter('private')
作用差不多。就是用户 点击后退不会出现警告页。十分有用哦。大家别忘了
header('Pragma: no-cache');
不缓存当前页 。其实和前一句一样意思,这句不过是为了兼容
http1.0
协议。
echo $contents; //
输出内容。
} 首先判断。文件当前文件不是
JS
问文件和后台打开了页面缓存静态化
,
。然后使用了
OB
读写缓冲区系列函数来操作缓冲区。
ob_get_clean()
函数。十分有用。一般我们做整站静态化也是利用
OB
系列函数来实现。
这个函数就是获取当前缓冲区的
HTML
内容。然后把将要输出的缓冲区内容清除掉。网页先是一点点读到浏览器的缓冲区。当缓冲区满了以后才会放出来。所以我们
可以用
OB
系列函数在缓冲区没有输出之前截取内容来做我们要做的过滤等动作。
(dz
的伪静态有部分就这样实现的。把缓冲区中的所有超级连接地址更改成
:thread-46695-1-3.html
形式。然后
apache
那边再用
.hataccess
来做判断跳转
)
这里也是。我们获取将要输出的内容以后 调用
strip_js()
这个函数来过滤
HTML
内容。 因为比较简单继续上菜:
function strip_js($string, $js = 1) { $string = str_replace(array("\n","\r","\""),array('','',"[url=]\\\""),$string[/url]); return $js==1 ? "document.write(\"".$string."\");\n" : $string; } 主要是来过滤内容里面的
\n
换行 、
\r
换页符 和
'\'
具体请百度:制表符
继续我们上个函数
strip_js
过滤完内容后。 在使用
file_put_contents()
函数 把内容写到文件里面去。也就是那个
HTML
静态页
,
恩完成了。当前页的静态页已经存在了。
但好象不对是吧。因为你刚用了
ob_get_clean()
函数。截取内容后清空了输出的内容。那就是浏览器成了空白页了。所以我们要手动的来
echo
输出内容给客户看。
echo
前呢
还有些东西要做就是
header
几个
http
协议头过去 注释已经给出。详细的百度:
http
协议,会有详细的参数说明 。其主要目的是:强制用户每次访问这个页面时获取最新资料,而不是使用存在客户端的缓存。
*/ ?> 继续 function strip_js($string, $js = 1) { $string = str_replace(array("\n","\r","\""),array('','',"[url=]\\\""),$string[/url]); return $js==1 ? "document.write(\"".$string."\");\n" : $string; } $js
为
1
的时候 是
document.write
内容
.
JS
格式我也不知道是什么格式
.
看功能
.
它只是很简单、的过滤掉
\n \r \
而已
.
查看全文
相关阅读:
高效 Java Web 开发框架 JessMA v3.2.3 正式发布
跨平台日志清理工具 Log-Cutter v2.0.1 RC-1 发布
跨平台日志清理工具 Log-Cutter v1.0.3 正式发布
高性能 Windows Socket 组件 HP-Socket v2.2.3 正式发布
7. Oracle数据加载和卸载
6. Oracle闪回特性
5. RAMN备份与恢复
4. Oracle数据库用户管理备份与恢复
3. Oracle数据库逻辑备份与恢复
后台系统依据路由生成tabs标签页
原文地址:https://www.cnblogs.com/gxldan/p/4066765.html
最新文章
python项目构建工具zc.buildout
利用yarn多队列实现hadoop资源隔离
Hadoop YARN中内存的设置
hive 行转列,列转行
jsonpath
hive on spark VS SparkSQL VS hive on tez
yarn 查看任务信息
几个有关Hadoop自带的性能测试工具的应用
Linux查看目录大小
HDFS源码分析之UnderReplicatedBlocks(一)
热门文章
聊聊Flume和Logstash的那些事儿
hive 导入csv文件
mongodb count 导致不正确的数量(mongodb count 一个坑)
hdfs清空回收站
ambari修改admin密码
高性能 Windows Socket 组件 HP-Socket v3.0.1 正式发布
高性能 Windows Socket 组件 HP-Socket v2.3.1-beta-2 发布
高性能 Windows Socket 组件 HP-Socket v2.3.1-beta-1 发布
更新整理本人所有博文中提供的代码与工具(Java,2013.10)
更新整理本人所有博文中提供的代码与工具(C++,2013.10)
Copyright © 2011-2022 走看看