文档章节

php页面静态化

just_wkj
 just_wkj
发布于 2016/01/02 15:04
字数 604
阅读 125
收藏 13

码上生花,ECharts 作品展示赛正式启动!>>>

网站一直在加载,很慢,处理方式多种;

    0.页面静态化;

    1.优化数据库;

    2.负载均衡;

    3.使用缓存技术


关于页面静态化

    使用函数如 file_put_contents($filename,$string);

    php的输出缓冲区  开启 5.3以后默认开启 output_bufferingon 

    没开启的话可以用 函数在页面开始  ob_start();

    eg:    

ob_start();
...//引文所需静态化的文件
file_put_contents('index.html',ob_get_contents());
ob_clean();


ob_start();
file_put_contents('index.html',ob_get_clean());

//注意ob_start() 无论php.ini 有没有开启 output_buffering 设置,
//最还都要开启,即使已经为on ,也是开辟新的输出缓冲区

关于如何触发系统生成纯静态页面

    方式有三种:

    0.页面添加缓存时间

        用户访问如index.php 判断index.html的修改时间 如当前时间差值 若大于设定的数值学访问index.php否则访问静态页面

 if(is_file('./index.html')&&time()-filemtime('./index.html')<300){
     require './index.html';
 }else{
     ob_start();
     ......
    file_put_contents('./index.html',ob_get_contents());
 }

    1.手动触发

        同上不需要判断

    2.定时任务 crontab  

    定时任务前几天转载了一篇博客关于linux定时任务的

    http://my.oschina.net/u/2411815/blog/550833



局部静态化

    

<script>
	$.ajax({
		url:'xxx.php',
		type:'get',
		dataType:'json',
		error:function(){
		},
		success:function(result){
			if(result.code==1){
				html='';
				$.each(result.data,function(key,value){
					html+='<li>'+value.title+'</li>'
				})
				$("#hot_html").html(html);
			}else{
				//todo
			}
		},
	})
</script>

    

    伪静态

<?php
/**
* 利用PHP正则表达式来处理伪静态
* 以http://static.com/newsList.php?type=2&category_id=1 =>  http://static.com/newsList.php/2/1.shtml
*/
//echo 12;
var_dump($_SERVER);

if(isset($_SERVER['PATH_INFO'])) {
	// 解析 /2/1.shtml 匹配pathinfo值,如果没匹配到则数据不合法,若匹配到做相应处理
	if(preg_match("/^\/(\d+)\/(\d+)(\.shtml)$/", $_SERVER['PATH_INFO'], $pathInfo)) {
		//var_dump($pathInfo);
		$type = $pathInfo[1]; // 类型值
		$categoryId = $pathInfo[2]; // 所在栏目值
		// 引入数据库链接类
		require_once('./db.php'); 
		$sql = "select * from news where `category_id` = ".$categoryId." and `type` = ".$type." order by id desc";
		try{
			$db = Db::getInstance()->connect();
			$result = mysql_query($sql, $db);
			$newsList = array();
			while($row = mysql_fetch_assoc($result)) {
				$newsList[] = $row;
			}
			var_dump($newsList);
			exit;
		}catch(Exception $e) {
			// TODO
		}
	} else {
		// TODO
		die('url error!');
	}
} else {
	// TODO
	// 错误提示,然后跳转到首页处理
	die('地址有误');
}

    路由重写

        apache 开启重写模块

        http.conf 中修改

            LoadModule rewrite_module modules/mod_rewrite.so

            Include conf/extra/httpd-vhosts.conf

        在httpd-vhosts.conf中设置

<VirtualHost 127.0.0.19:80>
    ServerName www.study.com
    DocumentRoot "C:/wamp/www/study"
    <Directory "C:/wamp/www/study">
        Options Indexes
        Order deny,allow
        allow from all
    </Directory>
    #下面是重写时候若遇到目录文件下有该文件则显示文件
    RewriteEngine on
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
    #下面是重写规则    //nignx重写类似
    RewriteRule ^/detail/([0-9]*).html$ /detail.php?id=$1
</VirtualHost>


        

© 著作权归作者所有

下一篇: bootstrap学习
just_wkj

just_wkj

粉丝 2
博文 80
码字总数 15398
作品 0
南京
程序员
私信 提问
加载中
请先登录后再评论。
高并发和大流量解决方案--动态页面静态化

  先来看看php在服务器的执行过程:当用户请求服务器php文件的时候,服务器将对php文件进行语法分析,其次是解析,最后才运行。当php文件有内容输出时,该内容会先经过服务器的php的缓冲区...

osc_o5wlp6ft
2018/07/18
2
0
PHP 页面静态化/纯静态化/伪静态化

概念 PHP静态化分为:纯静态化 和 伪静态化;纯静态化又分为:局部静态化 和 完全静态化 纯静态化:是把PHP生成的动态页面保存成静态的html文件,用户访问该静态页面,而不是用户每一次访问都...

osc_4l0h8in9
2018/07/03
0
0
PHP页面纯静态化与伪静态化

在很多地方都看到有PHP整站静态化的东东,怪唬人的。。其实,你会静态化一个页面,那么别说整站了,想静态化多少都可以。所以关键是,首先要知道怎么静态化一个页面,了解静态化的原理是关键...

Corwien
2016/04/15
311
0
小蚂蚁学习页面静态化(1)——静态化的原理

关于页面php文件执行阶段 语法分析——》编译——》运行 如何优化页面的响应时间 动态页面静态化 优化数据库 使用负载均衡 使用缓存 页面静态化能够解决的问题 1.减少服务器脚本的计算时间 ...

嗜学如命的小蚂蚁
2015/10/09
264
2
(PHP学习笔记)实现页面静态化

当我们在访问各个门户信息网站时,主页都会给我们显示各种头条、导航信息(例如新闻网)。我们可以想象,面对众多的数据库访问等操作,在我们访问这些网页的同时加载速度将会变得很慢。众所周...

w1sw
2016/08/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenvSwitch系列之四 ovs-ofctl命令使用

Open vSwitch系列之一 Open vSwitch诞生 Open vSwitch系列之二 安装指定版本ovs Open vSwitch系列之三 ovs-vsctl命令使用 Open vSwitch系列之四 ovs-ofctl命令使用 Open vSwitch系列之五 网桥...

osc_y9y4gqxx
45分钟前
11
0
27岁了,程序员写给自己的一封信

前言 相信很多人小时候的梦想都是当科学家,现在想想当初太傻,发现这些根本不可选。就跟考清华还是北大一样,当初纠结的要死,结果发现自己只是普通人,过着普通的生活,上着一眼望到头的班...

osc_teeurf8z
46分钟前
18
0
mysql 存储过程 查询结果集循环处理游标使用

注意每个版本的mysq的存储过程,触发器写法都会有些许区别,注意查看官方版本,不然你网上copy的语句可能执行无效,或者不成功 官方英文说明文档 https://dev.mysql.com/doc/refman/5.7/en/...

Love彼岸花开
47分钟前
7
0
Dump微信PC端的界面Duilib文件

零、有啥用 网上大多数的微信逆向思路,是CE搜索数据得到地址,OD下访问断点,然后在堆栈里面大海捞针的找Call,效率太低了。 其实微信的界面是用Duilib做的,Duilib的界面布局写在XML文件。...

osc_paqz1zc7
47分钟前
17
0
VNC电脑客户端,VNC电脑客户端下载!

IIS7服务器管理工具能够作为VNC的客户端,进行VNC的命令操作,可在客户端,下载,安装VNC软件! 同时,它也可以作为FTP的客户端,进行FTP的命令操作!它能够批量连接Windows和Linux系统下的服...

Raymond13
47分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部