php页面静态化的小例子

发布时间:2019-09-20编辑:脚本学堂
分享一例php实现页面静态化的代码,即使用ob系统函数生成静态页面,注释很详细,算是一份不错的学习笔记,感兴趣的朋友可以参考下。

本节内容:
php页面静态化

例子:
 

复制代码 代码示例:

<?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(); // www.jb200.com
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('/dddd/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      #错误页面放到最后
 */

您可能感兴趣的文章:
php定时生成静态html的代码分享
php 静态页生成的二种方法解析
php静态缓存提升网站访问速度的实现代码
php 静态新闻列表自动生成代码如何实现
php生成静态页面的三种方法与代码详解
php生成静态页面函数(php2html)的例子
php生成静态页面的方法(三个函数)
php生成html静态页面的方法参考
细说php生成静态文件之模板与缓存
php生成静态文件的二种方法
php生成静态页面的详细教程
php生成静态html文件的原理分析
了解php生成静态HTML文件的原理
PHP生成静态页面的方法
php生成静态html文件的三种方法