实现全站真静态化。

一般CMS系统都分为前台和后台, 前台系统是给用户看的,而后台则是管理员添加,修改,删除页面的地方。

在CMS系统中,前台一般都是html静态页面。

后台的责任是完成CRUD操作后更新静态页面。在更新静态页面的时候需要注意,是不是已更新完毕就立即更新,或者是定时更新。

通常例如Dede CMS系统和传智 CMS系统都是管理员手动点击更新(就是再走一遍控制器,使用ob缓存)。

或者想A67电影网是定时更新,一天更新一次而不是一但后台更新就生成新的页面。

需要记住的几点技巧:

1. 告诉后台你所要执行的是什么操作:

<!--隐藏区-->
<input type='hidden' name='oper' value='add'/>

例如上面的代码告诉浏览器我是要执行add的操作,这种方式通常都是在html中加入一段隐藏代码,不显示给用户。

2. 要了解系统基本结构:

CMS系统一般分为前台和后台。

前台多为html静态页面。后台有manager的登录页面和控制器。所有的crud操作都是在后台执行。

前台:

后台:

3. 最主要的是要了解缓存的机制:

PHP缓存技术一般有三种:

一种是ob缓存,第二种是程序缓存,第三种是浏览器缓存。

先了解什么是程序缓存:

如果在没有开启OB缓存的时候,那么所有的echo语句的输出都会放到程序缓存,自上而下的放置,到代码执行完毕之后会将程序缓存中的内容全部输出给浏览器显示。

但有个限制,header头文件必须出现在所有echo语句之前,一旦ob缓存没有开启,并且有echo语句出现在了header之前,那就会出错。

看一段代码:

<?php

echo "hello100";

header("content-type:text/html; charest=utf-8");

echo "hello200";

?>

说明:在php5.2版本中,在php.ini有一个配置  output_buffering,默认是关闭,如果是关闭的,则刚才的代码就会有警告。 Can not modify the header.

但需要说明的是

程序并不是一执行就返回到浏览器,而是等代码执行完毕后,才会一起返回给浏览器。

如果一定想按照如此的次序放置,那么就得开启ob缓存,开启的方式是:

ob_start(); // 开启ob缓存
ob_get_contents(); //得到ob缓存中的内容
ob_clean(); //清空ob缓存中的内容

如果开启了ob缓存,那么:

所有echo的语句都会放到ob缓存中,所有header的语句就会放到程序缓存中。

等程序执行到最后,会将ob缓存中的东西全都添加到程序缓存的内容之后。

这样就可以解决问题,因为头在前面,数据在后面。

看几个例子,了解ob缓存:

  • 如下程序则运行的结果?

<?php

ob_start(); //open ob buffering

echo "hello100";

header("content-type:text/html; charest=utf-8");

echo "hello200";

echo "hello300";

echo "hello400";

//ob_get_contents — 返回输出缓冲区(ob)的内容, 只是得到输出缓冲区的内容,但不清除它。

$str = ob_get_contents();

//把str保存到文件中

file_put_content("mylog.txt", $str);

echo "hello500";

echo "hello600";

?>

在页面中:会输出hello100-hello600

在mylog文件中会保存hello100-hello300

4. 关于ob缓存其他的一些函数:

ob_end_clean: 清空(擦除)缓冲区并关闭(ob)输出缓冲。

Answer: 看到的是hello300 hello300 hello500 hello600

文件中的是: hello300 hello300

ob_end_flush: 冲刷出(送出)输出缓冲区内容并关闭缓冲。

Answer: 页面输出hello100-600

文件中输出的是:空 (因为ob缓存已经关闭)

说明:这个函数和ob_end_clean的区别是,ob_end_clean不输出ob缓存区中的内容,但是ob_end_flush则会输出其中的内容,但两者都会关闭缓存区中的内容。

ob_flush:冲刷出(送出)输出缓冲区中的内容, 但是不关闭缓存。

flush: 刷新输出缓冲, 把程序缓存的数据,强制刷新到浏览器缓存。

<?php

echo str_repeat(' ',1024);

for($i = 0; $i < 5; $i++){

echo $i;

//强制吧程序缓存的数据,刷新到浏览器中去

flush();

sleep(1); //sleep 1 second

}

?>

程序会每隔一秒输出一个数字

注意:1. ob缓存先要禁用,如果不禁用,则echo的数据全都去ob缓存了,程序缓存中没有数据,那么这段程序将在5秒钟之后,将数据一同输出到页面中。

2. 一些版本的 Microsoft Internet Explorer 只有当接受到的256个字节以后才开始显示该页面,所以必须发送一些额外的空格来让这些浏览器显示页面内容。所以使用echo str_repeat(' ',1024);

3. 说明了浏览器缓存的存在。

转载于:https://www.cnblogs.com/Answer1215/archive/2013/06/14/3136741.html

【PHP CMS系统】-- 新闻管理系统 1相关推荐

  1. OFCMS 项目开源 java cms 系统 内容管理系统

    OFCMS 项目介绍 java 版CMS系统.基于java技术研发的内容管理系统.功能:栏目模板自定义.内容模型自定义.多个站点管理.在线模板页面编辑等功能.代码完全开源.MIT授权协议. 技术选型: ...

  2. OFCMS 项目开源 java cms 系统 内容管理系统

    技术选型:jfinal mybatis mysql  freemarker  redis spring 等 layui zTree bootstrap . 特点:支持多站点.可以根据需求添加手机站.p ...

  3. B2Ctt商城06 cms系统

    1 Cms系统 内容管理系统 右键可以管理分类,添加删除等 先实现内容的分类管理再实现内容管理. 初始化树形视图的url: '/content/category/list', (function(){ ...

  4. php写网页6,基于ThinkPHP6+AdminLTE框架开发的响应式企业网站CMS系统PHP源码,ThinkPHP6开发的后台权限管理系统...

    源码介绍 基于最新ThinkPHP6+AdminLTE框架开发的响应式企业网站CMS系统PHP源码,基于最新版本的ThinkPHP 6.0.0RC3框架,后台前端框架采用AdminLTE.系统的核心理 ...

  5. JAVA郑财校园新闻管理系统计算机毕业设计Mybatis+系统+数据库+调试部署

    JAVA郑财校园新闻管理系统计算机毕业设计Mybatis+系统+数据库+调试部署 JAVA郑财校园新闻管理系统计算机毕业设计Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 ...

  6. java毕业设计基于的校园头条新闻管理系统的设计与实现mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计基于的校园头条新闻管理系统的设计与实现mybatis+源码+调试部署+系统+数据库+lw java毕业设计基于的校园头条新闻管理系统的设计与实现mybatis+源码+调试部署+系统+数 ...

  7. javaweb JSP JAVA 新闻发布系统源码(新闻管理系统)jsp新闻发布系统

    javaweb JSP JAVA 新闻发布系统源码(新闻管理系统)jsp新闻发布系统 常见的Javaweb题材有 理财系统,就业管理系统,汽车租赁,简易网盘,疫情数据查看,在线招标房,屋租赁,教务管理 ...

  8. javaweb JSP JAVAJSP 新闻发布系统源码(JSP新闻管理系统)JSP新闻系统

    javaweb JSP JAVAJSP 新闻发布系统源码(JSP新闻管理系统)JSP新闻系统 protected void doGet(HttpServletRequest req, HttpServ ...

  9. java毕业设计郑财校园新闻管理系统Mybatis+系统+数据库+调试部署

    java毕业设计郑财校园新闻管理系统Mybatis+系统+数据库+调试部署 java毕业设计郑财校园新闻管理系统Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 开发语言: ...

最新文章

  1. 用C#实现基于TCP协议的网络通讯
  2. 【一步步学小程序】3. 使用自定义组件(component)
  3. dmz“非军事化区”
  4. 胸闷的原因有哪些? 相关解决偏方
  5. Memcache mutex设计模式
  6. google python的风格规范
  7. php pcre回溯攻击,php preg_match pcre回溯绕过
  8. Prometheus-使用Prometheus监控Kubernetes集群
  9. 软件测试——测试基础
  10. 经典Retinex算法简要剖析
  11. 伴随矩阵例题_§6_伴随矩阵及习题_精品.ppt
  12. 智能分数计算机在线使用,作业帮智能计算器在线使用
  13. 如何激发员工的积极主动性
  14. Leetcode 1235. Maximum Profit in Job Scheduling (python)
  15. 苹果cms模板_首涂第三套苹果CMSv10自适应视频站模板
  16. google mapView 用法
  17. rpm升级包冲突:conflicts with file
  18. hbs模块 mysql_让koa-hbs模块支撑koa2
  19. 让双网卡同时工作在内网和外网
  20. excel批量添加超链接

热门文章

  1. Preference组件探究之自定义Preference
  2. 曾经由盛转衰的骈文,却引领后人在文质兼美的创作之路上坚定前行
  3. 用泰勒公式推导梯度下降原理
  4. 翻译接口java_微软翻译api的java实现
  5. 快捷键创建向下滑动关机小技巧~~
  6. nodejs npm下载使用包
  7. 单边正弦信号拉斯变换 matlab
  8. android之Fresco框架(一)--Fresco基本使用
  9. 用安全策略加固无线局域网安全
  10. postgreSQL中的时间、数字类型模糊查询