文档章节

php页面静态化

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

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

    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>


        

© 著作权归作者所有

共有 人打赏支持
just_wkj

just_wkj

粉丝 2
博文 80
码字总数 15398
作品 0
南京
程序员
小蚂蚁学习页面静态化(1)——静态化的原理

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

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

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

w1sw
2016/08/15
0
0
PHP页面纯静态化与伪静态化

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

Corwien
2016/04/15
130
0
php页面静态化技术;学习笔记

demo

grootzhang
2016/04/12
0
0
Discuz! X2 下 URL 静态化的实现方法

在后台 => 全局 => SEO设置=> URL 静态化,开启各个页面的静态化后,在站点界面上,可以看到所有的链接都变成静态地址格式。下面我们看一下这个过程是怎么实现的。(以主题列表页为例) 众所...

啊和
2012/07/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

qduoj~前端~二次开发~打包docker镜像并上传到阿里云容器镜像仓库

上一篇文章https://my.oschina.net/finchxu/blog/1930017记录了怎么在本地修改前端,现在我要把我的修改添加到部署到本地的前端的docker容器中,然后打包这个容器成为一个本地镜像,然后把这...

虚拟世界的懒猫
今天
1
0
UML中 的各种符号含义

Class Notation A class notation consists of three parts: Class Name The name of the class appears in the first partition. Class Attributes Attributes are shown in the second par......

hutaishi
今天
1
0
20180818 上课截图

小丑鱼00
今天
1
0
Springsecurity之SecurityContextHolderStrategy

注:下面分析的版本是spring-security-4.2.x,源码的github地址是: https://github.com/spring-projects/spring-security/tree/4.2.x 先上一张图: 图1 SecurityContextHolderStrategy的三个......

汉斯-冯-拉特
今天
1
0
LNMP架构(Nginx负载均衡、ssl原理、生成ssl密钥对、Nginx配置ssl)

Nginx负载均衡 网站的访问量越来越大,服务器的服务模式也得进行相应的升级,比如分离出数据库服务器、分离出图片作为单独服务,这些是简单的数据的负载均衡,将压力分散到不同的机器上。有时...

蛋黄_Yolks
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部