关于页面优化和伪静态


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加密解密的代码
Oct 09 PHP
建立文件交换功能的脚本(三)
Oct 09 PHP
php中文字符截取防乱码
Mar 28 PHP
php 模拟POST|GET操作实现代码
Jul 20 PHP
php中serialize序列化与json性能测试的示例分析
Apr 27 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
Aug 22 PHP
Laravel 5框架学习之Eloquent 关系
Apr 09 PHP
PHP+MySQL存储数据常见中文乱码问题小结
Jun 13 PHP
PDO::getAttribute讲解
Jan 28 PHP
Laravel 之url参数,获取路由参数的例子
Oct 21 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
May 14 PHP
PHP代码覆盖率统计详解
Jul 22 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
php单件模式结合命令链模式使用说明
2008/09/07 PHP
php 面试碰到过的问题 在此做下记录
2011/06/09 PHP
php实现MySQL数据库备份与还原类实例
2014/12/09 PHP
php版微信数据统计接口用法示例
2016/10/12 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
JS JavaScript获取Url参数,src属性参数
2021/03/09 Javascript
jquery ajax提交整个表单元素的快捷办法
2013/03/27 Javascript
js如何实现设计模式中的模板方法
2013/07/23 Javascript
jquery得到iframe src属性值的方法
2014/09/25 Javascript
javascript排序函数实现数字排序
2015/06/26 Javascript
再JavaScript的jQuery库中编写动画效果的指南
2015/08/13 Javascript
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
JavaScript中splice与slice的区别
2017/05/09 Javascript
基于js中style.width与offsetWidth的区别(详解)
2017/11/12 Javascript
在vue中封装可复用的组件方法
2018/03/01 Javascript
Vue左滑组件slider使用详解
2020/08/21 Javascript
vue使用video插件vue-video-player的示例
2020/10/03 Javascript
[44:51]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第二场
2018/04/05 DOTA
Python实现的二维码生成小软件
2014/07/11 Python
opencv python 图像去噪的实现方法
2018/08/31 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
详解python中@的用法
2019/03/27 Python
使用python PIL库实现简单验证码的去噪方法步骤
2019/05/10 Python
Python整数与Numpy数据溢出问题解决
2019/09/11 Python
python快速排序的实现及运行时间比较
2019/11/22 Python
python实现多进程按序号批量修改文件名的方法示例
2019/12/30 Python
python pprint模块中print()和pprint()两者的区别
2020/02/10 Python
Selenium之模拟登录铁路12306的示例代码
2020/07/31 Python
CSS3的新特性介绍
2008/10/31 HTML / CSS
怎样从/向数据文件读/写结构
2014/11/23 面试题
生物技术专业研究生自荐信
2013/09/22 职场文书
黄金搭档广告词
2014/03/21 职场文书
天下第一关导游词
2015/02/06 职场文书
恋恋笔记本观后感
2015/06/16 职场文书
学法用法心得体会(2016推荐篇)
2016/01/21 职场文书
想要创业,那么你做好准备了吗?
2019/07/01 职场文书