失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 页面静态化3 --- 伪静态技术

页面静态化3 --- 伪静态技术

时间:2021-08-08 08:50:04

相关推荐

页面静态化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机制下一节继续!

如果觉得《页面静态化3 --- 伪静态技术》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。