美文网首页
PHP实现页面静态化

PHP实现页面静态化

作者: zshanjun | 来源:发表于2017-06-28 17:28 被阅读215次

概念

PHP静态化分为:纯静态化 和 伪静态化;纯静态化又分为:局部静态化 和 完全静态化

纯静态化:是把PHP生成的动态页面保存成静态的html文件,用户访问该静态页面,而不是用户每一次访问都重新生成一张相同的网页,优点就是减小服务器开销,

局部静态化:是生成的静态文件中,有局部的数据还是通过ajax技术动态获取的;

完全静态化:即不存在动态获取数据的情况,所以内容都来自静态的html页面

伪静态化:其实还是动态访问,其实质是动态生成数据,你访问的网址类似于"http://yourhost,com/index/post/12",是一个静态地址,该地址多见于博客地址,但伪静态化中,你访问的网址实际上经过服务器解析,还是会解析成类似于"http://yourhost,com/?c=index&a=post&id=12"的地址,所以称之为伪静态化

伪静态的优点:美观;便于搜索引擎收录

纯静态化的实现

利用php内置的ob函数实现页面的静态化,大概步骤如下:

<?php ob_start();//开启缓存 
?>

<p>我是要生成的静态内容,也可以在该处链接数据库生成动态内容于此</p>
<?php 
file_put_contents( 'index.html', ob_get_clean() );//把生成的静态内容保存到index.html文件,而不是输出到浏览器

?>

触发系统生成纯静态化页面

方法:页面添加缓存时间;手动触发

1、页面添加缓存时间

<?php
$file_name = 'index.html';
if(file_exists( $file_name ) &&  filemtime( $file_name ) - time() < 10 ){//如果文件是存在并且最后修改时间小于设定时间 10s
    //filemtime( $file_name );//得到文件最后修改时间
    //time();//当前时间
    require_once( $file_name );//引入文件
}else{
 ob_start( );
 ?>
<p>我是要生成的静态内容</p>
 <?php
file_put_contents( $file_name,  ob_get_contents() )//输出到浏览器
}

1、手动触发

如果后台数据存在更新,定时刷新不能及时更改静态页面,怎么办?可以引入了手动触发的功能,可以通过后台管理系统,手动更新。

除此之外还有Linux下的crontab定时任务

*/5****php/data/static/index.php

局部静态化

一般通过ajax来动态刷新页面中部分需要实时更新的数据

伪静态

PHP伪静态

// 静态:http://yourhost.com/index.php/12/2.html
// 动态:http://yourhost.com/index.php?type=12&id=2
$pathinfo = $_SERVER['PATH_INFO'];
if( preg_match('/^\/(\d+)\/(\d+)/', $pathinfo,$path) ){
    $type = $path[1];
    $id = $path[2];
    echo 'type=',$type,'&id=',$id;//获得type 和 id 进一步处理
}else{
    //错误处理
    echo "err";
}

Apache服务器rewrite配置

在httpd.conf文件中,找到

#注释:去掉前边的" # "开启rewrite服务,重启服务器生效
#LoadModule rewrite_module modules/mod_rewrite.so

#注释:http-vhosts.conf文件是虚拟域名配置的文件,开启改文件可以配置虚拟域名,一般默认是开启的
#Include conf/extra/httpd-vhosts.conf 

rewrite伪静态配置


<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "c:/Apache24/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error.log"
    CustomLog "logs/dummy-host.example.com-access.log" common

    #完整的配置规则如下
    RewriteEngine on
    #添加以下两项,!-d  和  !-f  分别表示  目录 和 文件
    #当访问的伪静态和相应的静态目录和文件冲突时,访问静态页面
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
    RewriteRule ^/index/([0-9]*).html$ /index.php?id=$1
    
</VirtualHost>



参考网站:

相关文章

  • 听欢哥讲PHP页面静态化

    页面静态化 1、什么是PHP静态化 PHP静态化的简单理解就是使网站生成页面以静态HTML的形式展现在用户面前。 ...

  • PHP 实现页面静态化

    导语 最近在工作中需要实现页面静态化,借此机会把相关资料记录,整理成demo。具体需求为输入域名,如jianshu...

  • php 实现页面静态化

    静态页面是网页的代码都在页面中,不需要执行asp,php,jsp,.net等程序生成客户端网页代码的网页。并且静态...

  • PHP实现页面静态化

    概念 PHP静态化分为:纯静态化 和 伪静态化;纯静态化又分为:局部静态化 和 完全静态化 纯静态化:是把PHP生...

  • PHP页面静态化...未完

    1.基本方式 file_put_contents()Hanshu使用PHP内置缓存机制实现页面静态化 -outp...

  • php页面静态化实现方案

    对内容不经常变化的面向用户的页面进行静态化处理可以显著提升页面的响应速度,同时还可以减少对服务器系统资源的占用并降...

  • 静态化方法

    静态化方法 页面静态化的方法,分为两种,一种是伪静态,就是url 重写,一种是你真的静态化。下面介绍PHP中页面静...

  • 第二课时:websocket

    通过原生php实现websocket 新建静态页面 php的实现 请求头 必须是有效的http request 格...

  • PHP页面静态化

    PHP页面静态化 在我们开发网站时候,为了能够让更多的用户看见,展现网站,除了做付费推广还有一个重要的角色就是给网...

  • PHP中9大缓存技术总结

    1、全页面静态化缓存 也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解...

网友评论

      本文标题:PHP实现页面静态化

      本文链接:https://www.haomeiwen.com/subject/bxoucxtx.html