学习搜索引擎优化的心得--《大型网站搜索优化的难点之一》
大型网站分工明确,专业性非常强,不同的网站频道由不同部门负责。编辑、美工、网页制作、后台程序员构成了网站维护的主体。不同职位的职责、要求非常细化。作美工的绝对不会插手网页内容的撰写,写前台代码的则丝毫不会染指后台程序设计。这样的团队模式设计,成功地保证了大型网站的日常运营,但对于搜索引擎优化来讲,则平添了不少麻烦。
为了更好地理解大型网站优化的难点,我们可以观察一下中小型网站。这一类型的网站。前台和后台的工作大多由一个人或一个小团队负责,人人在里面都是全才,什么美工,文案,前台代码和程序都得懂一点(被逼得)。整个网站规模也不大,网站的目录简洁,结构简单。更新维护的难度也相对较小,因此从这个角度去看,小型网站的存在的确为搜索引擎的优化提供了一个非常好的平台。因为搜索优化的技巧很多,而这些技巧都分布于网站的不同环节。举一个简单的例子:为了便于搜索引擎更好的搜到你的网站页面,你往往都要对你的页面代码进行一些必要的优化。比如添加meta标签的description属性等。但仅仅这样还是不够的,你还需要对你的网站内容进行优化,如在撰写网站内容时有意识地添加一些关键字。
这样的技巧,对于小型网站来讲,操作起来很容易。因为一个人或许身兼数职,对网站的方方面面都比较了解。无论代码还是内容的优化,一个人或者一个小团队就可以搞定。可是对大型网站来说,则是不小的难题,因为这些需要优化的地方位于不同的部门,由不同的人负责。每个人所能作的优化处理只能限于自己的工作范围。其他需要优化的环节,他们不了解,也力所不能及。然而,网站优化是一件需要统筹规划,全盘处理的事情,仅仅对一个细节的处理不能满足整个网站的优化需求。
说到底,搜索优化是一个比较“杂”的事情。因为“杂”,所以很难将其独立出来作为一个部门来运作管理。
因此,想要很好的解决大型网站的优化问题,除了要使每个工作岗位的员工能够充分理解并应用搜索优化知识之外,还需要各部门的通力合作,从而保证搜索工作的步伐协调一致。
作者: 子夜星河
原载: 子夜星河–SEO博客
版权所有,转载时必须以链接形式注明作者和原始出处及本声明
熟练运用php程序需要掌握的知识点 好多啊!!! 慢慢学
从点上来说:
1. php基本语法,像你学的《精通php》里的各个知识点.
2. Sql ,比如对Mysql的管理,sql语句的编写。
3. html,做页面肯定会需要这些东西了。
4. css,现在比较常用的的是Div+css设计。
当然你还得对 apache, linux有一定的了解了。
上面的一些东西,就够你做一些简单的网站,比如个人或公司主页了。
但是大网站是远远不是如上的一些东西就可以的,比如:
1. 要选择一个好的框架,比如Symfony,或zend framework。它们都采用了MVC模式。通过框架可以减少很多底层的重复开发,更重要的是可以让多人协作更加容易和让项目更易于扩展。
2. 代码和页面分离,比如Smarty,它可以让页面(html)和逻辑处理(php)做较好的分离,让美工和程序基本可以并行工作(前提是需求做得比较完善)。
3. 高级缓存。 这是一个php开发上永恒的话题,网站之所以要采用php就是因为速度快。采用缓存技术,可以让速度更快。 主要有的缓存技术有:
文件缓存,如Pear。
内存缓存,如Memcached。 速度非常快。
操作系统缓存,比如Squid。
4.加速工具,比如zend optimizer, 还有页面压缩。
5.高级数据库技术,比如设计优化,查询优化,集群等等。你能想象Google采用的数据库技术就是Mysql么?Mysql完全可以用于海量数据,但是我们一般到了几百万就很慢了,那是因为功底没有练就。
6.优化Apache,Mysql,linux服务器。主要是设计一些配置文件的参数,和关闭一些不需要的服务。
7.算法,不同的人写出来的东西效率可能差几十倍。建议多看看算法的书,还有多用php练习比较。
8.提高用户体验,当然就是要做的好看,但是页面文件不要太大,要不会影响速度,采用一些DHTML,Ajax技术。用普通人的使用习惯来设计。 Ajax可以采用一些框架,比如prototype。
当然从软件工程来看,你还得学一些比如CVS,phpunit等工具。
多研究一些开源的东西,对你学习有帮助
学习CSS了解单位em和px的区别
这里引用的是Jorux的“95%的中国网站需要重写CSS”的文章,题目有点吓人,但是确实是现在国内网页制作方面的一些缺陷。我一直也搞不清楚px与em之间的关系和特点,看过以后确实收获很大。平时都是用px来定义字体,所以无法用浏览器字体放大的功能,而国外大多数网站都可以在IE下使用。因为
1. IE无法调整那些使用px作为单位的字体大小;
2. 国外的大部分网站能够调整的原因在于其使用了em作为字体单位;
3. Firefox能够调整px和em,但是96%以上的中国网民使用IE浏览器(或内核)。
px像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。(引自CSS2.0手册)
em是相对长度单位。相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。(引自CSS2.0手册)
任意浏览器的默认字体高都是16px。所有未经调整的浏览器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。为了简化font-size的换算,需要在css中的body选择器中声明Font-size=62.5%,这就使em值变为 16px*62.5%=10px, 这样12px=1.2em, 10px=1em, 也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就行了。
em有如下特点:
1. em的值并不是固定的;
2. em会继承父级元素的字体大小。
所以我们在写CSS的时候,需要注意两点:
1. body选择器中声明Font-size=62.5%;
2. 将你的原来的px数值除以10,然后换上em作为单位;
3. 重新计算那些被放大的字体的em数值。避免字体大小的重复声明。
也就是避免1.2 * 1.2= 1.44的现象。比如说你在#content中声明了字体大小为1.2em,那么在声明p的字体大小时就只能是1em,而不是1.2em, 因为此em非彼em,它因继承#content的字体高而变为了1em=12px。
但是12px汉字例外,就是由以上方法得到的12px(1.2em)大小的汉字在IE中并不等于直接用12px定义的字体大小,而是稍大一点。这个问题 Jorux已经解决,只需在body选择器中把62.5%换成63%就能正常显示了。原因可能是IE处理汉字时,对于浮点的取值精确度有限。不知道有没有其他的解释。
部分php+mysql的操作语法
插入或更新数据
PHP 5.2以上建议用PDO操作数据库,这里以mysql为例。
1、用try捕捉异常
/*
某些时候由于发生异常而使得系统自动报错,可能泄漏一些敏感信息,
所以用try把数据库操作的代码包起来,一旦发生异常,可以进行自定义的处理
*/
try {
2、告诉PDO当前使用的数据库类型和要操作的数据库地址和名称
/*
mysql表示我们使用的是mysql数据库,注意用冒号和后面分隔。
host=localhost表示数据库所在的主机,这里假设数据库在本机localhost,注意和后面用分号分隔。
dbname=shop表示操作的那个数据库名称,假设为shop
*/
$dsn = “mysql:host=localhost;dbname=shop”;
3、新建一个PDO对象
/*
第一个参数用的是前面那个字符串$dsn。
第二个参数是数据库的用户名,假设是root。
第三个参数是数据库的密码,假设是pass。
*/
$db = new PDO($dsn, ‘root’, ‘pass’);
4、执行SQL语句
//假设插入到数据表product,字段为name和price,值为dami和50
$sql = “INSERT INTO product(name, price) values(’dami’, 50)”;
/*
PDO对象的方法exec用来执行sql语句,它的参数就是要执行的sql语句。
但它只返回受影响的行数,所以不要用它执行select
*/
$db->exec($sql);
5、如果不需要继续操作数据库,就销毁这个对象
$db = null;
6、用catch处理捕捉的异常(如果发生的话)
/*
在这些数据库操作过程中,一旦发生异常,try将把它传递给下面的catch。
catch的参数必须是某个异常类的对象,这里用的是PDO的异常类PDOException
*/
}catch (PDOException $e) {
//这里简单的自定义报错
echo ‘数据库操作发生错误’;
}
更新数据也是一样的,只要将$sql换成需要执行的语句。
如果要知道受影响的行数,只要用一个变量取得exec的返回值,例如:
$number = $db->exec($sql);
DIV+CSS总结+体验
让你使用DIV+CSS排版 不是让你用换个标签然后再去按照表格的方式去排版
而是做到内容与表现的分离
1: ID用于标识页面单独元素以及持久行的结构性元素 方便JS的调用
类用于标识同一页面可重复定义使用的结构性元素 ID与类的命名需与表现形式无关 :leftContent 而使用有意义的定义方式:sideBar等等。命名方式遵循“驼峰式大小写(标志符由多个单词组成 除首词首字母小写外 其余单词首字母均大写)”
2:避免滥用类 当类型的结构需要不一样的表现时 记得什么是层叠样式表 具体结构中的p a h1等可使用如下方式:div.sideBar p{}定义即后代选择器+ID或类选择器组合方式。
3:DIV与SPAN
IV(块级框)用于对块级元素的分组 SPAN(行内框)用于对行内元素分组标识
4:对于页面基本默认的方式可以选择通用选择器(*标识)进行定义 * { padding:0; margin:0;}
5: body 也是可以添加ID和类的 这样就可以为其添加特别样式。
6:样式表中导入样式表需在顶端 覆盖规则为本身样式覆盖导入样式
7:CSS样式表细分化 颜色 布局 风格 表单 均可分离 这样对以后的修改和风格设计更方便
8:盒模型:内→外
content←width height(补充:height只有在父元素定义了绝对高度时其%才有意义)
border
padding(内补丁)-“填充”
background-image
background-color
margin(外补丁)-“空白边”透明 可为负值
记住:在css中 width是指内容区域的宽度
IE/WIN与盒模型:
IE5.5/IE6怪异模式下: 元素框总宽度=content.width+margin.width
FireFox/Opera/.. : 元素框总宽度=content.width+padding.width+border.width+margin.width
差异在于:IE5.5/IE6怪异模式下 width=有效content.width+padding.width+border.width 内补丁和边框被算在内容宽度里面
#select{width:750px;padding:10px;border:5px}
IE怪异模式:总宽度:750px FF/OP:780px
IE怪异模式:有效内容宽度:750-20-10 FF/OP:750
IE6正常模式下:同于FF/OP
处理方法:在父元素或子元素中使用padding 本身不使用
空白边叠加:当两个空白边叠加时 顶或底边将会叠加 实际空白边高度=空白边大的值
例:<div id=”top” style=”margin:0 0 10px 0;”></div><div id=”bottom” style=”margin:20px 0 0 0;”></div>
空白边高度为20px
但是如果这个时候你添加边框或则填充,将不再叠加
//定位机制//
9:相对定位(relative):相对于其默认初始位置 绝对定位:相对父级元素或画布、HTML元素 与文档流无关 可覆盖其他元素 使用Z-INDEX 控制其层次。IE5.5/IE6下 对right bottom时 需设定框的宽高 后则根据画布右底定位
绝对定位(absolute)
10:float浮动:记住:“在标准浏览器中 浮动元素脱离了文档流 不占据外围容器空间” 明白了这点 你就会明白为什么IE和FIREFOX下表现的不同了。IE5.5、IE6浮动元素依然占据外围容器空间
例如:怎么在IE下feeter正常 在firefox下就跑上去了呢?^_^ 清除浮动吧
IE下 当float和text-align定义的方向一样时 出现双倍错误:select{float:left;text-align:left;margin:0 10px;}
实际左边margin-left:20px;FF/OP:10px 解决:加上display:inline;
11:彻底理解 “清除浮动”clear
clear:none、left、right、both、
表示当前框元素哪些边不应该挨着浮动框
理解了10中float在不同浏览器下的表现 你也就知道如何去使用清楚了。
12:背景图像的定位:只谈百分比 background:url(image-url.gif)no-repeat 20% 30%
20%:将图像X轴20%处与父元素X轴20%处重合 Y同理 top=0% bottom=100% left=0% right=100% center=50%
13:滑动门/
左右两个DIV 背景分别定义 一般左背景图像比较长; 左背景定位:left center 右背景定位:right center
外部控制容器宽度一般小于等于两个背景和 这样当内容动态变化时候 右背景图像便感觉像在左背景图像上滑动,故名。
这样也可以实现:<div id=”nav”><ul><li><a href=”index.html”><span>首页</span></a></li></ul></div>
css:
#nav a{float:left;background:url(”../images/navLeft.gif”) no-repeat left top;padding:0;text-decoration:none; cursor:hand;}
#nav a span {float:left;display:block;background:url(”../images/navRight.gif”) no-repeat right top;padding:5px 36px 5px 40px;color:#ffffff}
原理相似,注意背景图像定位。
14:完美的居中布局:body{text-align:center;mini-width:760px;}
div#wrapper{margin:0 auto;text-align:left;width:750px;}
mini-width IE并不认识 这是为老浏览器准备的,只是这个值比你需要的实际页面大就OK
15:小图标有时会给页面增色不少 用前记得规划好 整到一张大图片上 这样可以减少服务器请求次数。
网页设计最佳尺寸大小
网站设计时,有一个最常用的指导性原则:页面长度原则上不超过3屏,宽度不超过1屏。这个原则明显是从用户的体验出发,特别是宽度不超过一屏,其最基本的表现是浏览器不出现横向滚动条,这几乎是目前的设计准则。那么这里的一屏到底是多大呢?
普通用户通常浏览网页时,其浏览网页的有效面积会受到下面几个方面的影响:
显示器的分辨率
这个由科技发展和用户购买力及喜好决定,其数据取决于统计。
操作系统
毫无疑问目前是Windows的天下,其中WindowsXP占绝大多数。
网页浏览器
IE依旧份额最高,但是Firefox、Opera和Safari等也有一定市场。
个人定制
主要是用户定制操作系统的样式、操作系统任务栏是否隐藏和浏览器的样式,但是总体上这部分应该属于高级用户,绝大部分用户依旧会使用操作系统和浏览器的默认样式。
下面是关于浏览器和屏幕分辨率的统计数据:

基本上用户分辨率都在800×600以上,绝大部分都在1024×768以上,从全球情况来看,800×600的分辨率会越来越少。
国内浏览器依旧是IE6的天下,这将会持续较长的时间。从全球市场来看,国内的Firefox2.0和IE7会逐步增长,特别当IE7的中文版推出和Windows自动更新的推广开始以及随Vista上市,IE7增长会更快。
所以计算一屏大小应基于以下原则:
一屏指绝大部分用户的浏览器显示网页的有效可视区域。
一屏的计算环境是Windows XP和浏览器均处于默认样式。
由于IE无论是否超过一屏都存在纵向滚动条的位置,Firefox和Opera是在页面超过一屏的时候出现纵向滚动条,且浏览绝大部分网页都有纵向滚动条的存在,所以一屏大小的计算都基于浏览器有纵向滚动条的状态下。
由于Firefox2.0在只浏览一个网页时不出现多窗口的控制栏,而其它的多窗口浏览器都出现多窗口控制栏且使用时都会同时浏览多个网页,所以一屏大小在Firefox中指多窗口的控制栏存在时。
下面是基于上面的原则得到常用浏览器和分辨率下的的数据结果:

关于上面数据的解释和一些其他事实:
在800×600分辨率和Windows XP下定制Windows的经典样式IE6的有效可视区域是780×445,Windows98、Windows 2000和Windows2003均采用经典样式切IE5.0、IE5.5、IE6.0的布局上相似,所以相同分辨率下应该比Windows XP默认的样式要大。
知道浏览器型号和屏幕的分辨率能够很容易的推算出可视区域面积,比如1024×768下IE7.0的可视面积是(1024-21)×(1024-148)
综合上面所有的数据,结论如下:
最保守而最有兼容性的一屏大小是:779×432
最广泛的一屏大小是:1003×600
适合目前国内的情况,一屏大小是779×600
解决phpMyAdmin数据乱码问题
语言选择chinese simplified(zh-utf-8)如果浏览含有中文的数据库表时,中文显示为乱码;
HTML默认UTF-8编码,MYSQL默认latin1字符集。
随便写段PHP代码访问次数据库表内容,WEB浏览器显示中文正常。
问题出在只在使用phpMyAdmin进行数据库管理时中文显示乱码,于是上网寻求解决方案,功夫不负有心人,终于找到解决方案,并实施成功!
解决方案:
修改libraries下的select_lang.lib.php文件,
我修改了两个地方,主要是告诉程序识别utf8:
第一步
#’zh-gb2312′=> array(’zh|chinese simplified’, ‘chinese_simplified-gb2312′, ‘zh’),修改为
‘zh-gb2312-utf-8′=> array(’zh|chinese simplified’, ‘chinese_simplified-gb2312′, ‘zh’),
第二步
#’gb2312′ => ‘gb2312′改成 ‘gb2312′ => ‘latin1′, Language选择:zh-gb2312-utf-8