我是要生成的静态内容,也可以在该处链接数据库生成动态内容于此
<?php file_put_contents( 'index.html', ob_get_clean() );//把生成的静态内容保存到index.html文件,而不是输出到浏览器 ?> 复制代码 触发系统生成纯静态化页面 方法:页面添加缓存时间;手动触发 页面添加缓存时间 复制代码 <?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( ); ?>我是要生成的静态内容
<?php file_put_contents( $file_name, ob_get_contents() )//输出到浏览器 } 复制代码 如果后台数据存在更细,定时刷新不能及时更改静态页面,怎么办?所有引入了手动触发的功能 手动触发 手动触发的大概样式就类似于优酷视频评论区,当有新评论时,会后一条屎黄屎黄的小提示框:“有新评论,点击更新”,也类似于app中的下滑刷新的机制,自己去寻找吧。。 除此之外还有Linux下的crontab定时扫描程序 */5****php/data/static/index.php 局部静态化内容不做叙述 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 如果你不会配置虚拟域名,可以参考我的另外一篇文章:WAMPServer配置修改及问题汇总 rewrite伪静态配置 复制代码 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 RewriteRule ^/vidio/([0-9]*).html$ /vidio.php?id=$1 复制代码 RewriteEngine其他配置规则以后会再添加 现在你访问http://yourhost.com/vidio/12.html时,相当于访问了http://yourhost.com/vidio.php?id=12 问题:配置完上面的内容后,又存在以下问题?如果项目目录下存在该静态页面时,到底是访问我们的静态页面还是访问我们伪静态的文件呢? 经过测试我们发现,并不会访问静态页面,如果我们想访问我们的静态页面怎么办? 伪静态和静态页面冲突时解决办法: 复制代码 #完整的配置规则如下 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 复制代码 如果你觉得本文对您有帮助,可以留言或点赞哦! >>留于文后 如果您发现文中存在错误,欢迎留言指出,提前感谢!