回顾:
静态化的分类:
真静态:
伪静态:
实现真静态的方式:
(1)使用ob缓存
ob_start();ob缓存的数据是:响应的主体数据,
程序缓存:缓存的数据,http返回的数据(头和主体)
(2)使用模板替换技术,
一、使用模板替换技术实现真静态。
1、实现方式:
(1)在添加新闻内容的时候,生成对应的新闻详情的静态页面。
(2)在修改新闻内容的时候,要重新生成新闻详情的静态页面。
(3)在访问新闻详情页面的时候,直接访问生成的静态页面
2、基本原理
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页面代码:
添加新闻的。核心代码:
(3)创建一个新闻列表页面,
index.php页面:
核心代码是新闻详情的连接。
(4)当修改新闻的时候,则重新生成静态页面。
二、扩展,使用模板替换技术实现真静态
刚才的案例缺点:
真实的项目中,应该是分前台和后台的,
让前台静态化,后台无需生成静态页面。
要让前台的首页也生成一个静态页面。
1、项目规划 :
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
2、如何开启重写模块,
在httpd.conf文件中进行开启。
3、入门案例:
如果请求abc.html 重写成请求index.php
我们使用.htaccess来进行配置。使用该文件要保证虚拟主机里面的allowoverride all为all
具体的.htaccess文件中的配置:
效果访问:
访问abc.html 实际上返回的是运行index.php的结果。
4、具体的语法:
RewriteEngine on #开启重写引擎
RewriteCond 重写条件,要满足一定的条件才重写。
RewriteCond条件的语法:
RewriteCond 判断依据 条件表达式 [条件标志]
(1)判断依据:可以使用服务器变量:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
比如:%{REQUEST_FILENAME} 表示请求的文件名称
比如:%{HTTP_REFERER}:表示请求的来源。
(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信息表示:请求的来源,使用哪个文件请求的。
思路:通过请求资源的referere信息获取当前的域名,比如域名为www.demo.com,如果referer中没有该域名,则禁止访问。
可以添加一张图片给一个提示;
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
7、规则标志[QSA]的使用
查询的字符串追加:
定义的规则
在没有使用[QSA]之前:
在规则后面添加[QSA]
使用效果:
四、网站并发测试工具
主要测试网站的代码的执行速度。
基本使用:
语法:
ab.exe -n 访问的总的次数 -c 并发量 页面的url地址。
1、在默认情况下,apache的最大并发为150个,因此需要调整
首先搞清楚当前apache是什么MPM(多路处理模块), 通俗讲就是apache处理多并发的方式,
常见的有三种
(1)perfork(预派生模式)
(2)worker(工作者模式)
(3)winnt模式(windows下默认的模式)
2、开启MPM(处理并发的方式)
在httpd.conf文件中,开启
主要是使用httpd-mpm.conf文件进行配置。
3、如何查看当前apache使用哪一种MPM
httpd.exe –l
在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 #最大并发数