zoukankan      html  css  js  c++  java
  • 页面静态化3 --- 伪静态技术

    伪静态

     上一节我们讲了真静态技术的几个优点:

      ①减少服务器对数据响应的负荷;

      ②加载不用调动数据库

      ③方便优化引擎

    但同时伴随着缺点:

      ①生成的真静态文件多,服务器对html文件的响应负担也比较重;

      ②空间占用比较大。

    如果一个系统使用真静态进行页面静态化,需要生成海量的静态页面,我们可以考虑使用伪静态来处理

    目前业内最喜欢用的一个技术是(伪静态技术+ob的组合)技术

    首先复习以下正则表达式:

    //PHP中如何使用正则表达式?---案例
    
    $str = 'abcdeft1234 ghirh 5656;
    
    //①要求:把4个连续的数照出来?
    
    //解:
    
      preg_match('/(d)(d)(d)(d)/si', $str, $arr);
    
      
    
      //preg_match()函数只匹配一个满足要求的字串就停止匹配,$arr[0]用来存储 满足正则表达的字串,
    
      //$arr[1]匹配模式中第一个字表达的结果,
    
      //$arr[2]匹配模式中第二个表达式的结果
    
      //$arr[n]匹配模式中个第n个表达式的结果
    
      preg_match_all('/(d)(d)(d)(d)/si', $str, $arr);
    
      //preg_match_all();匹配所有满足条件的字串,并且将结果放在$arr中,$arr[0]是匹配到的所有结果
    
      //$arr[0][0]匹配存放第一个匹配结果,$arr[0][1]匹配存放的第二个匹配结果
    
      //$arr[1][0]是第一匹配到的结果中的第一个子表达式1,$arr[n][m]是是第n个匹配到的结果中的第m个子表达式
    
      
    
    //②找三个数相同且相连的数 -- 找到 000-666-222
    
      
    $str = "000-666-222 jfkdjkfd234-900-098 89";
    
    解:
    
      preg_match('/(d)1{2}-(d)2{2}-(d)3{2}/si', $str, $arr);
    
      特别说明:当正则表达式中有反向引用的时候,那么正则表达式使用单引号!!!! 

    观察此页:

    http://localhost/category.php/345-1-22.html

    Apache服务器认为:category.php是文件,而之后的345,1,22是跟的参数

    那么通过浏览器输出的内容就是category.php的内容

    因为SEO的原因,上面的网址本身应当这样写:

    http://localhost/category.php?a=345&b=1&c=22,

    所以这样写的网址不利于seo

    通常有公司用伪静态的技术把网址写成:

    http://localhost/category.php/345-1-22.html

    如何动态取出345、1、22这三个值???

    方法1:PHP正则表达式

      ①获取345-1-22.html

      

    $pathinfo = $_SERVER['PATH_INFO'];
    
    if (pre_match('/^/(d+)-(d+)(d+).html$/si', $pathinfo, $arr)) {
    
      echo $arr[1];
    
      echo $arr[2];
    
      echo $arr[3];
    
    } else {
    
      echo '您输入的地址有误!';
    
    }

    练习:获取地址如,http://localhost/news-sports-id67.html 获取这个地址中的news,sports,id67

    if (preg_match('/^/(w+)-(w+)-(w+).html$/is', $_SERVER['PATH_INFO'], $arr)) {
    
      echo $arr[1];
    
      echo $arr[2];
    
      echo $arr[3];
    
    } else {
    
      echo '输入地址有误';
    
    }

     问题:当直接在浏览器输入http://localhost/news-sports-id67.html的时候访问结果与访问http://localhost/news.php/news-sports-id67.html结果相同

    方法2:Apache的rewrite机制  

    Apache的rewrite机制下一节继续!

      

    ---- 始终相信这句:
    ----“做每天该做的事,不计结果!”
    ---- 因爲對於編程還只是新手,對很多知識掌握的不牢靠,歡迎大家批評指正~~|=-=|~~
  • 相关阅读:
    第三篇:服务提供与Feign调用
    第二篇:服务提供与Rest+Ribbon调用
    第一篇:注册中心Eureka
    先导篇:SpringCloud介绍篇
    将list集合按指定长度进行切分,返回新的List<List<??>>集合
    清空数据的简便语法
    JDK 1.8 新特性之Date-Time API
    读书笔记-我国弱势群体犯罪问题研究
    读书笔记-沙漠里的细水微光
    读书笔记-没有空白
  • 原文地址:https://www.cnblogs.com/Zell-Dinch/p/3926711.html
Copyright © 2011-2022 走看看