关于页面优化和伪静态


Posted in PHP onOctober 11, 2009

关于页面优化和伪静态

1)版面优化
2)伪静态(重点涉及apache,smarty,正则)

详细内容:

一、版面优化:
版面优化其实主要涉及HTML,JS,CSS,XML之间的关系(XML相关在此不作描述).
1)一般来说,在资源共享的前提下,我们最基本的目的是让搜索引擎所收录(很多人被AJAX所迷惑,到处使用AJAX,但我的观点是,只有在后台或用户操作部分才使用).
因此,首先我们应该按搜索引擎的收录准则来设计(其实下面说的“伪静态”还不是为了搜索引擎,由于相关文档有好几个PAGE,请自行搜索),主要是html的使用问题,如

2)然后解决加载速度和内容纯度问题:
主要是以下几个原则:
1>不要为了版面美观,把无谓的HTML加上去,建议把版面美观的任务交给CSS,并认真考虑CSS的可重用性,HTML只作为对信息内容的描述(好像是XML的重点吧)。我在网上抽查了好一部分的站点,好的网站,html占总内容的50%以下,但有的站点,文字内容占总内容不到20%,
2>把JS,CSS写成文件.只要是利用了浏览器的CAHCHE,减少内容下载
3>HTML标签应该尽量减少嵌套,我见过夸张的一个站点,TABLE嵌套居然是11层..狂汗….

3)解决数据合理处理时间
这个涉及内容比较多,主要是

二、伪静态
这里主要描述apache,smarty的应用,当然,其实使用什么模板甚至不使用模板都没什么关系的,只是笔者长年使用smarty,深浓感受到它的强大
该部分主要针对的是对系统有控制权和对apache、正则较为熟悉的用户。

在这里,核心是强调正则的应用,如果你不会正则表达式,那么你就只能停留一成不变的抄袭阶段,甚至无法使用.而且正则在应用上普遍(基本上什么语言都有)、频繁和强大,笔者还是建议花点时间,学精一点,受用终生
对于搜索引擎,据我所知,关键是处理GET中的”?”、”&”.”php”,还有就是URL长度的问题就OK了,形式就看个人爱好了。
先说APACHE,关键是使用mod_rewrite,打开mod_rewrite模块(在httpd.conf中,把LoadModule rewrite_module modules/mod_rewrite.so前面的“#”去除)

如果使用了vhost(),可以在vhost里面加入类似下面的代码:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^xxx.com$
RewriteRule ^/([^\.\/]+)\.html$ /index.php?action=$1 [L]

解释:
以上配置不一定放在vhost里,按你个人要求放得合适就行。
第一行,表示该vhost将要使用rewrite(URL重写)
第二行,RewriteCond是用于如果后面条件符合(第一个参数满足第二个参数,其中第二个参数为正则表达式),则执行下面的RewriteRule指令,其中%{xxxx}表示是apache的变量,%{HTTP_HOST}表示URL的主机(域名),其它变量请查看apache2手册
第三行,实现url重写(重头戏),第一个参数为在浏览器中输入的url,满足该正则的uri才执行重写,第二个参数是重写规则,即把满足第一个参数的url 按照该规则转换成你须要的url在这里笔者必须指出,重写后的url如果包含”http://”,跳转后的地址会显示在浏览器的地址栏中。第三个参数是一些控制,如以上[L]表示该重写是最后一条,后面的重写规则不再被执行。

smarty部分:
主要是处理输出的页面内容,你使用apache的rewrite后,你页面中的链接当然使用了它的规则了,如:原来是 abc.php?action=doit就要改用类似abc/action-doit.html这样的方式表示,当然,你可以在做页面时自己手动去改,但我觉得这是比较笨的方法.为什么不去使用ob_xxxxx()去控制呢?(ob_xxxx()系的函数使用请参考php手册).在这里的介绍使用 smarty去代替,因为这样会更加灵活
在smarty中,使用register_outputfilter()注册一个处理方法即可,具体方法类似为:
//先定义好一个处理函数
function change_url($tpl_output, &$smarty)
{
$tpl_output=preg_replace(”/\/index.php?\?action=([^&]+)/i”,”/\\1.html”,$tpl_output);
return $tpl_output;
}
//该函数第一个参数是smarty的页面内容,第二个是smarty指针
//然后使用
$tpl->register_outputfilter(”change_url”);

register_outputfilter()方法是输出过滤函数,即交给 change_url($tpl_output, &$smarty)第一个参数是smarty处理后的页面内容
同类型的还有前过滤方法register_prefilter(),即把smarty模板交给第一个参数,详细使用方法请参考smarty手册

PHP 相关文章推荐
php discuz 主题表和回帖表的设计
Mar 13 PHP
PHP笔记之:基于面向对象设计的详解
May 14 PHP
ThinkPHP之import方法实例详解
Jun 20 PHP
推荐十款免费 WordPress 插件
Mar 24 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
May 13 PHP
PHP自毁程序(慎用)
Jul 09 PHP
CodeIgniter钩子用法实例详解
Jan 20 PHP
浅析PHP中的i++与++i的区别及效率
Jun 15 PHP
phpcms的分类名称和类别名称的调用
Jan 05 PHP
PHP错误处理函数register_shutdown_function使用示例
Jul 03 PHP
thinkPHP5实现的查询数据库并返回json数据实例
Oct 23 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
Sep 17 PHP
PHP iconv 函数转gb2312的bug解决方法
Oct 11 #PHP
Ha0k 0.3 PHP 网页木马修改版
Oct 11 #PHP
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
Oct 11 #PHP
PHP 日期时间函数的高级应用技巧
Oct 10 #PHP
PHP 日期加减的类,很不错
Oct 10 #PHP
全世界最小的php网页木马一枚 附PHP木马的防范方法
Oct 09 #PHP
PHP 字符串分割和比较
Oct 06 #PHP
You might like
使用配置类定义Codeigniter全局变量
2014/06/12 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
2017/06/02 PHP
Laravel 自定命令以及生成文件的例子
2019/10/23 PHP
jquery实现的缩略图预览滑块实例
2015/06/25 Javascript
jQuery prototype冲突的2种解决方法(附demo示例下载)
2016/01/21 Javascript
微信小程序 MD5加密登录密码详解及实例代码
2017/01/12 Javascript
angular实现form验证实例代码
2017/01/17 Javascript
JavaScript之创意时钟项目(实例讲解)
2017/10/23 Javascript
一种angular的方法级的缓存注解(装饰器)
2018/03/13 Javascript
vue实现通讯录功能
2018/07/14 Javascript
实现Vue的markdown文档可以在线运行的方法示例
2018/12/11 Javascript
vue封装一个简单的div框选时间的组件的方法
2019/01/06 Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
2019/05/13 jQuery
详解vue2.0模拟后台json数据
2019/05/16 Javascript
JS实现判断数组是否包含某个元素示例
2019/05/24 Javascript
Vue.js 中的实用工具方法【推荐】
2019/07/04 Javascript
vue - vue.config.js中devServer配置方式
2019/10/30 Javascript
js实现微信聊天界面
2020/08/09 Javascript
[03:36]2015国际邀请赛第二日现场精彩集锦
2015/08/06 DOTA
深入解析Python中的urllib2模块
2015/11/13 Python
利用Python画ROC曲线和AUC值计算
2016/09/19 Python
Keras使用tensorboard显示训练过程的实例
2020/02/15 Python
python 深度学习中的4种激活函数
2020/09/18 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
2021/01/08 Python
美国著名童装品牌:OshKosh B’gosh
2016/08/05 全球购物
办公室文员工作自我评价
2013/12/01 职场文书
财会自我鉴定范文
2013/12/27 职场文书
讲文明树新风公益广告宣传方案
2014/02/25 职场文书
个人租房协议书样本
2014/10/01 职场文书
债务授权委托书范本
2014/10/17 职场文书
警示教育片观后感
2015/06/17 职场文书
导游词之峨眉乐山/兵马俑/北京故宫御花园
2019/09/03 职场文书
详解Js模块化的作用原理和方案
2021/04/29 Javascript
MySQL 数据类型选择原则
2021/05/27 MySQL
SQL之各种join小结详细讲解
2021/08/04 MySQL
详细谈谈JavaScript中循环之间的差异
2021/08/23 Javascript