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机制下一节继续!

      

    ---- 始终相信这句:
    ----“做每天该做的事,不计结果!”
    ---- 因爲對於編程還只是新手,對很多知識掌握的不牢靠,歡迎大家批評指正~~|=-=|~~
  • 相关阅读:
    Balanced Binary Tree
    Convert Sorted List to Binary Search Tree
    Convert Sorted Array to Binary Search Tree
    Binary Tree Zigzag Level Order Traversal
    Validate Binary Search Tree
    Binary Tree Level Order Traversal II
    Binary Tree Level Order Traversal
    Maximum Depth of Binary Tree
    如何把U盘的两个盘或者多个盘合成一个
    bugku 想蹭网先解开密码
  • 原文地址:https://www.cnblogs.com/Zell-Dinch/p/3926711.html
Copyright © 2011-2022 走看看