php页面静态化

    xiaoxiao2021-03-25  97

    <?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      #错误页面放到最后  */
    转载请注明原文地址: https://ju.6miu.com/read-26451.html

    最新回复(0)