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


    回顾:

    静态化的分类:

    真静态:

    伪静态:

    实现真静态的方式:

    (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

  • 相关阅读:
    day15---作业
    day14---函数的参数
    day14作业
    day--13函数的基本使用
    day13--函数练习(作业)
    day12--文件处理
    day12--作业
    Python函数对象、函数嵌套和闭包函数
    每日作业以及周末作业
    Python名称空间与作用域
  • 原文地址:https://www.cnblogs.com/lifushan/p/5471643.html
Copyright © 2020-2023  润新知