php实现伪静态和静态化(来源网络只作为个人笔记)
2017-07-29 11:24
302 查看
概念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文件,而不是输出到浏览器
?>触发系统生成纯静态化页面(方法:页面添加缓存时间;手动触发)页面添加缓存时间<?php
header("content-type:text/htm;charset=utf-8");
$file_name = 'index.html';
//如果文件存在并且最后修改时间小于设定时间10s,filemtime( $file_name ) 得到文件最后修改时间if(file_exists( $file_name ) && time() - filemtime( $file_name ) < 10 ){
//引入文件require_once( $file_name );
}else{
ob_start();
?>
<p>我是要生成的静态内容</p>
<?php
file_put_contents( $file_name, ob_get_contents() )//输出到浏览器
}
?>手动触发手动触发的大概样式就类似于优酷视频评论区,当有新评论时,会后一条屎黄屎黄的小提示框:“有新评论,点击更新”,也类似于app中的下滑刷新的机制,自己去寻找吧。除此之外还有Linux下的crontab定时扫描程序*/5****php/data/static/index.phpPHP伪静态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
<Directory "E:\phpStudy\WWW"> Options -Indexes +FollowSymLinks +ExecCGI AllowOverride All Order allow,deny Allow from all Require all granted</Directory> #配置规则如下所示 RewriteEngine on RewriteRule ^/vidio/([0-9]*).html$ /vidio.php?id=$1</VirtualHost>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
相关文章推荐
- 架设 Amoeba 服务器(来源网络只作为个人笔记)
- TP5.0中使用JSSDK(来源网络只作为个人笔记)
- linux 配置ip重启网络失败 出现未知连接(来源网络只作为个人笔记)
- php+中文分词scws+sphinx+mysql+只作为个人笔记,请点击下面链接到原地址查看
- PHP学习笔记(6) PHP静态化页面的实现思路
- 【个人笔记重点,不作为参考】主题:Mac OSX下Sublime Text配置使用Ctags实现代码跳转
- (PHP学习笔记)实现页面静态化
- 【个人笔记重点,不作为参考】主题:window删除磁盘映射网络
- 【学习笔记】PHP实现页面静态化
- php实现页面静态化(纯静态&&伪静态)
- 使用php实现伪静态化页面
- 使用php来实现网络服务
- php实现CMS系统个人心得
- PHP 正则表达式 个人笔记总结
- [转载]C#中实现强制整除 来源:网络
- PHP伪静态化页面的实现
- 使用php来实现网络服务
- java学习笔记:【从网络获取图像资源】实现
- PHP学习笔记 2009-8-22 用JavaScript实现删除确认
- 使用php来实现网络服务