20150321--模板替换+OB缓存+页面静态化

回顾: php

静态化的分类: html

真静态: linux

伪静态: apache

实现真静态的方式: 编程

(1)使用ob缓存 windows

ob_start();ob缓存的数据是:响应的主体数据, 缓存

程序缓存:缓存的数据,http返回的数据(头和主体) 服务器

(2)使用模板替换技术, 并发

1、使用模板替换技术实现真静态。

一、实现方式: ide

(1)在添加新闻内容的时候,生成对应的新闻详情的静态页面。

(2)在修改新闻内容的时候,要从新生成新闻详情的静态页面。

(3)在访问新闻详情页面的时候,直接访问生成的静态页面

二、基本原理

wps3A38.tmp

三、开始实现:

(1)新建一个新闻表:

create table news(

        id int unsigned primary key auto_increment,

        title varchar(32) not null comment '新闻的标题',

        content text comment '新闻的内容',

        filename varchar(64) not null default '' comment '存储生成的对应的新闻详情页面的路径'

)engine myisam charset utf8;

(2)action.php页面代码:

添加新闻的。核心代码:

wps3A59.tmp

(3)建立一个新闻列表页面,

index.php页面:

核心代码是新闻详情的链接。

wps3A69.tmp

(4)当修改新闻的时候,则从新生成静态页面。

2、扩展,使用模板替换技术实现真静态

刚才的案例缺点:

真实的项目中,应该是分前台和后台的,

让前台静态化,后台无需生成静态页面。

要让前台的首页也生成一个静态页面。

一、项目规划 :

wps3A6A.tmpwps3A6B.tmpwps3A7C.tmpwps3A7D.tmpwps3A7E.tmpwps3A8E.tmpwps3A9F.tmp

二、action.php页面完成添加

三、生成前台的首页面。

//新建一个后台的首页,

3、伪静态:

从形式上看是一个静态地址,实际上仍是访问的动态地址,

好比:访问:http://www.abc.com/news-sport-id123.html

其实是:http://www.abc.com/news.php?type=sprot&id=123;

主要是利于seo,静态页面的方式,比较容易被搜索引擎给搜集。

一、实现原理:

使用apac he的rewrite机制。

rewrite机制:就是一个url的重写机制,

好比:请求的url是  abc.html      重写到abc.php

123.php      abc.php

wps3AB0.tmp

二、如何开启重写模块,

在httpd.conf文件中进行开启。

wps3AC0.tmp

三、入门案例:

若是请求abc.html   重写成请求index.php

咱们使用.htaccess来进行配置。使用该文件要保证虚拟主机里面的allowoverride all为all

wps3AD1.tmpwps3AD2.tmpwps3AF2.tmp

具体的.htaccess文件中的配置:

wps3B03.tmp

wps3B04.tmp

效果访问:

访问abc.html  实际上返回的是运行index.php的结果。

wps3B14.tmp

四、具体的语法:

RewriteEngine on  #开启重写引擎

RewriteCond  重写条件,要知足必定的条件才重写。

RewriteCond条件的语法:

RewriteCond   判断依据   条件表达式 [条件标志]

(1)判断依据:可使用服务器变量:

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

好比:%{REQUEST_FILENAME}  表示请求的文件名称

好比:%{HTTP_REFERER}:表示请求的来源。

wps3B35.tmp

(2)条件表达式:能够是一些标志,或者字符串

好比:

-d   表示是一个目录

-f    表示是一个文件

RewriteCond %{REQUEST_FILENAME} !-d  //若是请求的路径不是一个目录

RewriteCond %{REQUEST_FILENAME} !-f  //若是请求的路径不是一个文件

(3)[条件标志]

[NC]表示不区分大小写

[OR],在默认状况下多个条件(RewriteCond)之间是而且的关系。若是咱们使用或关系则后台添加[OR]标志。

案例1:好比咱们请求,123.html,若是123.html文件存在,则请求123.html文件,若是不存在则执行重写规则。

RewriteCond   %{REQUEST_FILENAME} !-f

RewriteRule  123.html   index.php

RewriteRule  语法规则

RewriteRule   规则的url(可使用正则)  目标url  [规则标志]

规则标志:

[F] 表示:表示禁止重写

[NC] 表示:不区分大小写

五、使用重写机制来完成一个防盗链效果:

referer信息表示:请求的来源,使用哪一个文件请求的。

wps3B45.tmp

思路:经过请求资源的referere信息获取当前的域名,好比域名为www.demo.com,若是referer中没有该域名,则禁止访问。

wps3B46.tmpwps3B47.tmpwps3B58.tmp

能够添加一张图片给一个提示;

wps3B69.tmp

六、在ecshop里面是使用rewrite机制来完成伪静态。

在没有使用伪静态地址是:

http://www.itecshop.com/goods.php?id=5

ec里面默认的伪静态地址:

http://www.itecshop.com/goods-9.html

咱们本身要作的就是:

http://www.itecshop.com/goods-9.html地址重写成

http://www.itecshop.com/goods.php?id=9便可

RewriteRule  goods-(\d+).html  goods.php?id=$1

$1是捕捉到第一个子模式,即 (\d+)的内容。

扩展:好比访问:http://www.abc.com/news-sport-id100.html

重写成http://www.abc.com/news.php?type=sport&id=100

RewriteRule news-(music|sposrt)-id(\d+).html   news.php?type=$1&id=$2    

wps3B79.tmp

七、规则标志[QSA]的使用

查询的字符串追加:

定义的规则

wps3B7A.tmp

在没有使用[QSA]以前:

wps3B8B.tmp

在规则后面添加[QSA]

wps3B9B.tmp

使用效果:

wps3BAC.tmp

4、网站并发测试工具

主要测试网站的代码的执行速度。

wps3BBD.tmp

基本使用:

语法:

wps3BBE.tmp

ab.exe  -n 访问的总的次数  -c 并发量  页面的url地址。wps3BCE.tmp

wps3BCF.tmpwps3BD0.tmpwps3BD1.tmpwps3BD2.tmpwps3BE3.tmpwps3BE4.tmp

一、在默认状况下,apache的最大并发为150个,所以须要调整

首先搞清楚当前apache是什么MPM(多路处理模块), 通俗讲就是apache处理多并发的方式,

常见的有三种

(1)perfork(预派生模式)

wps3C14.tmp

(2)worker(工做者模式)

wps3C24.tmp

(3)winnt模式(windows下默认的模式)

wps3C35.tmp

二、开启MPM(处理并发的方式)

在httpd.conf文件中,开启

wps3C46.tmp

主要是使用httpd-mpm.conf文件进行配置。

wps3C56.tmp

三、如何查看当前apache使用哪种MPM

httpd.exe –l

wps3C67.tmpwps3C68.tmpwps3C79.tmp

在window是主要使用winntmpm,

在linux下面经常使用,perfork(预派生模式)

linux下通常是perfor模式

给你们一个合理的建议配置. 对大部分网站,中型网站,配置:

<IfModule mpm_prefork_module>
              StartServers         5      #预先启动
              MinSpareServers      5
              MaxSpareServers      10  #最大空闲进程
              ServerLimit          1500   #用于修改apache编程参数
              MaxClients           1000   #最大并发数
              MaxRequestsPerChild  0  #一个进程对应的线程数,对worker    更有效果。若是是0则不让进程死掉。

</IfModule>

若是你的网站pv值  百万

ServerLimit          2500   #用于修改apache编程参数
MaxClients           2000   #最大并发数

image

相关文章
相关标签/搜索