设为首页 收藏本站
查看: 311|回复: 0

[经验分享] PHP页面静态

[复制链接]

尚未签到

发表于 2017-3-20 13:38:59 | 显示全部楼层 |阅读模式
  PHP页面的静态化很有必要,尤其是在CMS系统中,一些内容一旦生成,基本上不会有变化,这时如果用html将页面静态化,无疑会减少服务其解析PHP页面的负担。
无论是利用框架还是简单的脚本,原理基本一致:就是利用PHP进行文件操作,替换html模板中的动态元素。
  关键点: 生成静态内容
  创建静态文件
  保存静态文件标识
  删改静态文件
  第一点:生成静态内容 就是利用创建文章得到的一些内容,这个基本上类似,但是也有各自的特色等,例如:标题,时间,作者,关键字,来源,内容等。把这些内容通过编辑器编辑后提交到生成页面,然后读取模板文件(.html) 在模板文件中有以上相应字段的关键字,就是替换的关键字,例如{title}{author}{content},这个因人而异,只要不重复就可以,然后用函数把从提交页面得到的相应内容替换相应的字段。最后得到的就是静态的内容。
  第二点:创建静态文件,PHP有一系列相应的文件操作函数可以迅速的创建静态文件,在这里面有几点需要注意,首先是标题,我看过有些PHPer创建静态文件直接用数字或者字母等无关对应文章的内容来做标题,这样对于搜索引擎的优化无法起到作用,其次是文件的唯一性,不要起得文件名重复了,这样会引起未知错误。再次是文件的权限问题,要能创建文件 但是又不能让文件权限有安全漏洞。
  第三:保存静态文件标识,这里用到了数据库,其实文章的内容等text类型的数据一般也存在数据库中,但是只是用来生成或者更新静态文件,每次读取的时候是读取的静态文件。这里一般的标识是文章的标题等。然后对应的每个标识有一个相应的path(路径)字段用来做链接到静态文件的超链接。
  第四:虽然生成的文件变化的次数不多,但是更改是少不了的,这时候就需要重新生成静态页面了 用unlink函数删除原来的页面然后重复上面的步骤生成一个新的页面,同时更新数据库相应的内容。
  下面是例子,
  其中的数据库操作类文件我已经发表过了在PHP操作数据库Mysql类文件
  这个例子有些粗糙 但是我只是让说明下上面的过程,至于完善的PHP静态类我稍后会整理发表
  数据库
  CREATE TABLE IF NOT EXISTS `news` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`title` varchar(100) NOT NULL,
`content` text NOT NULL,
`path` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
  PHP代码
  header("Content-type:text/html;charset=utf8");$action = empty($_POST['action'])?'':$_POST['action'];if($action == 'add'){include_once 'config/db.php'; //包含数据库的配置文件include_once 'class/conn.class.php'; //包含数据库的操作类extract($_POST); //把提交的数据从数组生成相应的变量$filename = 'html'.rand(1,10).date("YmdHis",time()); //静态页面的名称$html_content = file_get_contents('demo.html'); //获得静态页面的模板内容$html_content = str_replace('{title}', $title, $html_content); //在模板中替换相应的标题$html_content = str_replace('{content}', $content, $html_content);//在模板中替换相应的内容$filename = 'htmls/'.$filename.'.html';//获得静态页面的全部路径,相对路径if(!file_exists($filename)){//生成静态页面$fp=fopen("$filename","w+");fputs($fp,$html_content);fclose($fp);}$db = new db;//生成数据库操作类$SQL = "insert into news(`title`,`content`,`path`) values ('$title','$content','$filename')";$check = $db->ExecuteSQL($SQL); //把数据存储到数据库中if($check){echo "成功";}else{echo "失败";}}
  至于提交的页面就省略了。
  目录结构
DSC0000.gif

  稍后会总结成一个比较完善的PHP静态页面生成类

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-352474-1-1.html 上篇帖子: PHP SESSION解惑 下篇帖子: 运算符号 php
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表