#伪静态作用#
- 增强搜索引擎的友好性:通过改变动态网页的URL,使之看起来像静态网页,伪静态技术有助于提高网站在搜索引擎中的表现,使网站内容更易被搜索引擎抓取和索引。
- 提升用户信任度和体验:伪静态的URL后缀方式与静态网页相似,这有助于提升用户对网站的信任度。同时,伪静态技术也能改善用户对网站的整体体验,因为静态URL通常看起来更加整洁和专业。
- 缓解服务器负担:伪静态技术通过减少服务器响应请求的次数,可以有效减轻服务器的负担,特别是在高并发访问的情况下。
- 提高关键词排名:在某些搜索引擎中,伪静态技术可以通过提高关键词的相关性来提升网站的排名。例如,谷歌会以特殊方式展示与搜索关键词高度相关的网站,从而提高这些网站的点击率。
具体实现
将?后面的参数转化为不带?的url地址
- 将参数值放到地址上
- 将参数名放到路由上
- 尽量将url后缀变为.html
参数识别
- 通过服务器软件url重写统一入口
- 通过统一路由处理函数将地址及路由参数变为普通带?的地址
- 通过统一路由处理函数将参数添加进系统变量
- 通过统一路由处理函数确定要执行的文件
- require要执行的文件
- 配合统一入口加命名空间简直完美
缓存
- 为统一路由处理函数得到的普通带?的地址添加id
- require要执行的文件用ob处理得到结果及文件类型写入缓存文件
- 通过id获取缓存文件,没有缓存则ob require
一点代码
路由处理 //只针对get请求 string类型参数
路由定义
<?php
define('route',[['/detail/{$id}.html','/detail.php'],['/detail/{$id}/{$key}.html','/detail.php'],]);
路由处理 //将参数添加进$_GET
<?php
namespace ppt\core;class Route
{public static function addRouteParam($s){$url = $s;$params = [];$route_params = [];$route_param_keys = [];$route_param_values = [];foreach (route as $item){$route_tmp = preg_replace('/\{\$[\w]+\}/','[\w]+',$item[0]);$route_tmp = str_replace(['/','.'],['\/','\.'],$route_tmp);if(preg_match('/^'.$route_tmp.'(\?[\s\S]+)?$/i',$s)){preg_match_all('/\{\$[\w]+\}/',$item[0],$route_param_keys);if(!empty($route_param_keys)){$route_param_keys = str_replace(['{','$','}'],'',$route_param_keys[0]);preg_match_all('/[\w]+/',$s,$route_param_values);if(empty($route_param_values)){break;}if(strpos($s,'?')!==false){if(!empty(parse_url($s)['query'])){parse_str(parse_url($s, PHP_URL_QUERY), $params);}}$route_param_values = $route_param_values[0];$file = $item[1];array_unshift($route_param_keys,'file');for($i=1;$i<count($route_param_keys);$i++){$route_params[$route_param_keys[$i]] = $route_param_values[$i];}$params = array_merge($params,$route_params);$url = $file.'?'.http_build_query($params);}break;}}return $url;}
}
参数提取及调用执行文件
public static function run($s){$_ppt_file = app.'/code'.parse_url($s)['path'];if(preg_match('/\/$/',$_ppt_file)) {$_ppt_file.='index.php';}if(strpos($s,'?')!==false){if(!empty(parse_url($s)['query'])){parse_str(parse_url($s, PHP_URL_QUERY), $_params);foreach ($_params as $_key=>$_item){$_GET[$_key] = $_item;}}}if(!is_file($_ppt_file))http_code_404();require $_ppt_file;}
后续思考
如此这般php的作用变为生成及控制静态文件
最完美的哼(ˉ(∞)ˉ)唧是没有痕迹,最优秀的伪静态就是静态,故怎样用php实现没有php?