您的位置:首页 > 其它

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

2016-05-08 21:24 471 查看
回顾: 静态化的分类: 真静态: 伪静态: 实现真静态的方式: (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 #最大并发数

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: