回顾: php
静态化的分类: html
真静态: linux
伪静态: apache
实现真静态的方式: 编程
(1)使用ob缓存 windows
ob_start();ob缓存的数据是:响应的主体数据, 缓存
程序缓存:缓存的数据,http返回的数据(头和主体) 服务器
(2)使用模板替换技术, 并发
一、实现方式: ide
(1)在添加新闻内容的时候,生成对应的新闻详情的静态页面。
(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)当修改新闻的时候,则从新生成静态页面。
刚才的案例缺点:
真实的项目中,应该是分前台和后台的,
让前台静态化,后台无需生成静态页面。
要让前台的首页也生成一个静态页面。
一、项目规划 :
二、action.php页面完成添加
三、生成前台的首页面。
//新建一个后台的首页,
从形式上看是一个静态地址,实际上仍是访问的动态地址,
好比:访问: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
二、如何开启重写模块,
在httpd.conf文件中进行开启。
三、入门案例:
若是请求abc.html 重写成请求index.php
咱们使用.htaccess来进行配置。使用该文件要保证虚拟主机里面的allowoverride all为all
具体的.htaccess文件中的配置:
效果访问:
访问abc.html 实际上返回的是运行index.php的结果。
四、具体的语法:
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] 表示:不区分大小写
五、使用重写机制来完成一个防盗链效果:
referer信息表示:请求的来源,使用哪一个文件请求的。
思路:经过请求资源的referere信息获取当前的域名,好比域名为www.demo.com,若是referer中没有该域名,则禁止访问。
能够添加一张图片给一个提示;
六、在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
七、规则标志[QSA]的使用
查询的字符串追加:
定义的规则
在没有使用[QSA]以前:
在规则后面添加[QSA]
使用效果:
主要测试网站的代码的执行速度。
基本使用:
语法:
ab.exe -n 访问的总的次数 -c 并发量 页面的url地址。
一、在默认状况下,apache的最大并发为150个,所以须要调整
首先搞清楚当前apache是什么MPM(多路处理模块), 通俗讲就是apache处理多并发的方式,
常见的有三种
(1)perfork(预派生模式)
(2)worker(工做者模式)
(3)winnt模式(windows下默认的模式)
二、开启MPM(处理并发的方式)
在httpd.conf文件中,开启
主要是使用httpd-mpm.conf文件进行配置。
三、如何查看当前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 #最大并发数