山山未迟

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

回顾:

静态化的分类:

真静态:

伪静态:

实现真静态的方式:

(1)使用ob缓存

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

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

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

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

1、实现方式:

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

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

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

2、基本原理

wps3A38.tmp

3、开始实现:

(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)当修改新闻的时候,则重新生成静态页面。

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

刚才的案例缺点:

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

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

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

1、项目规划 :

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

2、action.php页面完成添加

3、生成前台的首页面。

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

三、伪静态:

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

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

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

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

1、实现原理:

使用apac he的rewrite机制。

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

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

123.php      abc.php

wps3AB0.tmp

2、如何开启重写模块,

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

wps3AC0.tmp

3、入门案例:

如果请求abc.html   重写成请求index.php

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

wps3AD1.tmpwps3AD2.tmpwps3AF2.tmp

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

wps3B03.tmp

wps3B04.tmp

效果访问:

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

wps3B14.tmp

4、具体的语法:

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] 表示:不区分大小写

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

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

wps3B45.tmp

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

wps3B46.tmpwps3B47.tmpwps3B58.tmp

可以添加一张图片给一个提示;

wps3B69.tmp

6、在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

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

查询的字符串追加:

定义的规则

wps3B7A.tmp

在没有使用[QSA]之前:

wps3B8B.tmp

在规则后面添加[QSA]

wps3B9B.tmp

使用效果:

wps3BAC.tmp

四、网站并发测试工具

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

wps3BBD.tmp

基本使用:

语法:

wps3BBE.tmp

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

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

1、在默认情况下,apache的最大并发为150个,因此需要调整

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

常见的有三种

(1)perfork(预派生模式)

wps3C14.tmp

(2)worker(工作者模式)

wps3C24.tmp

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

wps3C35.tmp

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

在httpd.conf文件中,开启

wps3C46.tmp

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

wps3C56.tmp

3、如何查看当前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

posted on 2016-05-08 21:24  山山未迟  阅读(270)  评论(0编辑  收藏  举报