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

[经验分享] php页面静态化笔记

[复制链接]

尚未签到

发表于 2015-8-26 11:22:35 | 显示全部楼层 |阅读模式
<?php
/**
* php页面静态化
* 静态化分为 真静态和伪静态
* 静态化的有点在于 SEO 和 安全性 使用缓存机制还可以大大提高网站的速度
*/
/**
* php自带的缓存机制
* 需要在php.ini中进行配置
* 或者使用ob_start()-> output_buffering:on
* 关于几个缓存的函数:ob_start();ob_clean();ob_get_content();ob_end_clean();关闭缓存同时清空
* ob_flush();输出缓存里面的内容并且清空,但是不关闭 ob_end_flush();关闭同时输出
*/
/**/
ob_start();//开启缓存
echo 'yyy';//没有开启缓存的情况下会报错,因为没有遇到header的时候,php默认发送一个header,这个header无法修改
header('content-type:text/htm;charset=utf-8');
echo '123';
ob_get_contents();//得到缓存的内容
ob_end_clean();
echo 'aa';//放在程序缓存里面
header('content-type:text/htm;charset=utf-8');//运行的时候会报错,因为缓存已经关闭

/*
* 利用php自带的缓存机制做真缓存
* 真缓存的页面的内容应该是长期都不需要变的,并且不同用户看到的东西都是一样的
* 原理:用户第一次访问的时候查询数据库,然后得到缓存区的内容,并且放到缓存文件里面
* */
/**
*/
ob_start();
//判断缓存文件是否存在
$html_filename='static.html';
if(file_exists($html_filename) &&  (filemtime($html_filename)+30) > time())//超过30秒则重新生成
{
//直接取出缓存页面的内容
echo file_get_contents($html_filename);
exit;
}
echo 'Your content';
$html_content=ob_get_contents();
$html_filename='static.html';
file_put_contents($html_filename,$html_content);
/*
*  * 上述原理的缺陷:1.实时性不够  2.不利于seo优化
* 解决办法:在数据库发生增加和更新的时候更新缓存文件
* */
if($_REQUEST['act'] == 'add')//update 也是
{
//先获取模版文件
$template_content=file_get_contents('template.tpl');
//替换标签
$php_content=str_replace("{",'<?php echo ',$template_content);
$php_content=str_replace("}",'?>',$template_content);
//生成缓存文件
$php_tplname='php_tpl.php';
file_put_contents($php_tplname,$php_content);
include(file_put_contents);
$html_content=ob_get_contents();
$html_filename='static.html';
file_put_contents($html_filename,$html_content);
}
/**
* 真静态的缺陷:生成的 缓存文件很多,占硬盘
* 对于海量的html生成,可以考虑用伪静态
*/
$str='123,33,333';
preg_match('/\d\d\d\d/is',$str,$arr);//匹配连续四个出现的数字 返回到arr 只是匹配一个 arr[0]
preg_match('/(\d)(\d)/is',$str,$arr);//这时候arr返回三个 0放置匹配的字符串,arr[n]按照表达式顺序返回匹配的字符串
//对于需要全部匹配的使用preg_match_all()函数;正则表达式里面需要'' 不要使用""
/**
* 使用apache的rewrite机制
* 注意点:apache的配置 开启rewrite module 也要设置derectory的权限 allowoverride from all
* 文件 .htacss //匹配规则是从上而下的,可以设置error页面
* RewireEngine On
* news-id(\d)\.html$  news.php?id=$1
* news-id(\d).html$    error.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-104418-1-1.html 上篇帖子: 执行PHP客户端脚本调用.NET和VCL的浏览器(含源) 下篇帖子: 腾讯PHP面试题一
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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