【PHP CMS系统】-- 新闻管理系统 1
实现全站真静态化。
一般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相关推荐
- OFCMS 项目开源 java cms 系统 内容管理系统
OFCMS 项目介绍 java 版CMS系统.基于java技术研发的内容管理系统.功能:栏目模板自定义.内容模型自定义.多个站点管理.在线模板页面编辑等功能.代码完全开源.MIT授权协议. 技术选型: ...
- OFCMS 项目开源 java cms 系统 内容管理系统
技术选型:jfinal mybatis mysql freemarker redis spring 等 layui zTree bootstrap . 特点:支持多站点.可以根据需求添加手机站.p ...
- B2Ctt商城06 cms系统
1 Cms系统 内容管理系统 右键可以管理分类,添加删除等 先实现内容的分类管理再实现内容管理. 初始化树形视图的url: '/content/category/list', (function(){ ...
- php写网页6,基于ThinkPHP6+AdminLTE框架开发的响应式企业网站CMS系统PHP源码,ThinkPHP6开发的后台权限管理系统...
源码介绍 基于最新ThinkPHP6+AdminLTE框架开发的响应式企业网站CMS系统PHP源码,基于最新版本的ThinkPHP 6.0.0RC3框架,后台前端框架采用AdminLTE.系统的核心理 ...
- JAVA郑财校园新闻管理系统计算机毕业设计Mybatis+系统+数据库+调试部署
JAVA郑财校园新闻管理系统计算机毕业设计Mybatis+系统+数据库+调试部署 JAVA郑财校园新闻管理系统计算机毕业设计Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 ...
- java毕业设计基于的校园头条新闻管理系统的设计与实现mybatis+源码+调试部署+系统+数据库+lw
java毕业设计基于的校园头条新闻管理系统的设计与实现mybatis+源码+调试部署+系统+数据库+lw java毕业设计基于的校园头条新闻管理系统的设计与实现mybatis+源码+调试部署+系统+数 ...
- javaweb JSP JAVA 新闻发布系统源码(新闻管理系统)jsp新闻发布系统
javaweb JSP JAVA 新闻发布系统源码(新闻管理系统)jsp新闻发布系统 常见的Javaweb题材有 理财系统,就业管理系统,汽车租赁,简易网盘,疫情数据查看,在线招标房,屋租赁,教务管理 ...
- javaweb JSP JAVAJSP 新闻发布系统源码(JSP新闻管理系统)JSP新闻系统
javaweb JSP JAVAJSP 新闻发布系统源码(JSP新闻管理系统)JSP新闻系统 protected void doGet(HttpServletRequest req, HttpServ ...
- java毕业设计郑财校园新闻管理系统Mybatis+系统+数据库+调试部署
java毕业设计郑财校园新闻管理系统Mybatis+系统+数据库+调试部署 java毕业设计郑财校园新闻管理系统Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 开发语言: ...
最新文章
- 用C#实现基于TCP协议的网络通讯
- 【一步步学小程序】3. 使用自定义组件(component)
- dmz“非军事化区”
- 胸闷的原因有哪些? 相关解决偏方
- Memcache mutex设计模式
- google python的风格规范
- php pcre回溯攻击,php preg_match pcre回溯绕过
- Prometheus-使用Prometheus监控Kubernetes集群
- 软件测试——测试基础
- 经典Retinex算法简要剖析
- 伴随矩阵例题_§6_伴随矩阵及习题_精品.ppt
- 智能分数计算机在线使用,作业帮智能计算器在线使用
- 如何激发员工的积极主动性
- Leetcode 1235. Maximum Profit in Job Scheduling (python)
- 苹果cms模板_首涂第三套苹果CMSv10自适应视频站模板
- google mapView 用法
- rpm升级包冲突:conflicts with file
- hbs模块 mysql_让koa-hbs模块支撑koa2
- 让双网卡同时工作在内网和外网
- excel批量添加超链接