网页加速系列(一)、 网页加速之图形处理篇

这几天东营房产网打开速度越来越慢,拿到是与新版网站快要完成~,于是找些网站优化加速的资料看看,学习一下~

(一)、 网页加速之图形处理篇

在维护网站的过程用,可能遇到过这样的情况:辛辛苦苦做出来的页面,但图片过多,网页结构、表格结构复杂,程序冗长,使得加载速度很慢!网页总是不能完全的展现在浏览者面前。

以后的几篇文章将网页减肥方面的一些经验介绍给大家,希望大家都来讨论,说说自己的观点!

1、合并图片

尽量把几个可能组合在一起的图片制作成一张图片,这是因为浏览器对网页中的每个图片都会做个别请求,也就是说如果网页中有5张图片,那么浏览器就会向WEB服务器提出5次请求,这必然会增加服务器的负担,从而使得速度变慢!当然大图片除外。

2、指定宽高

在网页中镶入图片的时候,一定注明高度和宽度,如:<IMG SRC="TEST.GIF" WIDTH=100 HEIGHT=100>,如果没有注明,浏览器在下载完图片以前,将无法确定图片的大小,页面的提交就会延迟,甚至可能重复向WEB服务器提出请求。

3、选择图片格式

选择适当的图片格式,常见的格式为:JPG和GIF,两种图片分别采用不同的方法压缩图片。JPG支持的颜色数量比较多,一般对于照片或者颜色变化显著的图片用JPG格式,还应该适当的选择压缩比,在基本不损坏效果的前提下尽量压缩。GIF最多支持256种颜色,适合小图片、色彩比较少的图片,对于GIF图片可以在不影响图片效果的前提下尽量减少图片的颜色数量。适当的选择图片的格式,对图片的大小会有不小的影响。可以借助一些图片处理软件。

4、图片处理

应该采用逐步提交方式提交图片,GIF和JPG两种图片格式都支持逐步提交格式,图片在逐步提交时,在浏览器收到完整图片信息之前就开始显示了。这样看起来快一些。GIF保存为交错格式,JPG选择逐步编码来保存。

5、替换文字

对于所有图片应该带有文本,用<IMG>ALT标签实现,因为很多朋友为了增加浏览速度关闭了浏览器的图片功能。提供了文本有助于搞清页面的内容。

最后注意,网页到最后总是以内容来吸引大家的,内容是最重要的!所以,请尽量将一些没有必要的图片去掉!

今天到这里,下次将和大家讨论一下网页和表格的结构对速度的影响!

关于伪静态和真静态

一、伪静态的用处

有些用户觉得,伪静态和真静态实际被收录量会相差很大,其实不然,从你个人角度,你去判断一下一个帖子到底是真静态还是伪静态?估计很难看得出,因为所谓静态的意思,就是地址中不带问号,不带问号的就是静态,管他是真的还是伪的?搜索引擎看得出吗?所以说,其实不论是真的还是伪的,其实对于搜索引擎来说都是一样的,搜索引擎没有说,你这个是伪的,我不收录你。

追根究底来说,为什么搜索引擎会不收录带问号的网址?因为搜索引擎怕由于问号而进入死循环,称为“搜索机器人陷阱(Spidertraps)”(以前动网就有这样一个漏洞,蜘蛛进去出不来了),所以很多时候带问号的地址搜索引擎是不会进去的,伪静态对于搜索引擎来说,其实就是静态,因为地址中没有带问号,所以没有真静态比伪静态收录得多的说法。

二、为什么选择伪静态?

有很多用户说:真静态不好吗?为什么不用真静态?访问起来不是更快吗?负载不是更好吗?等等等等。。。。。。

在这里,其实只用一个问题来回答:为什么选择MYSQL?很多用户大概不明白为什么那么多大型论坛都选择了MYSQL数据库作为储存机制,大概大部分都是想:“因为DZ用了MYSQL,所以就是MYSQL”。[separator]

其实不然,试想DZ为什么会在那么多论坛程序并存的日子生存下来并笑傲江湖,很大原因是因为DZ用了MYSQL。试想如果大C当年改的程序是一个文本论坛,那还会有DZ的今天吗?或者从另一个角度问,为什么那么多大型网站都选择了MYSQL而不是文本作为储存机制?

所谓文本论坛,实际就跟真静态的说法差不多了,将数据储存在空间上面,大量读写硬盘,等等。。。。。。

为什么这种写法会被淘汰呢?我相信答案不会是老师所说的:“Discuz!目前有 2129867 篇帖子,存储成html的话大约是 20799M,也就是 20G左右。这当中还不计算由于磁盘存储机制造成的空间浪费(100个 1k的文件占用的空间可能会是200K)。”

这种说法从我个人观点来看,这个理由不能给用户不使用真静态充分的理由。然而,另一个理由却是值得我们注意思考的,也是为什么绝大多数站都不选择生成静态:

删除、更新这些html内容会导致大量的磁盘io操作以及大量的磁盘碎片。

正如上面的说法,在实际当中确实会导致大量的磁盘I/O操作(input/output),大量进行I/O操作带来的后果可想而知,会产生大量的磁盘碎片甚至会导致硬盘出现坏道。

所以对于生成静态而言,还不如去用文本论坛,可以更好的解决你们的需求。(副W就是做文本论坛出生的,当时的名字为ofstar,后因发展困难转为MYSQL,而PW生成静态页面也就是PW以前文本方式稍加改进用于吸引用户眼球的噘头)

当然,如果大家记忆力好的话,应该可以记得PW4的时候PW论坛不能访问很长一段时间,后来恢复到一段时间前的数据,官方的说法是被人攻击而导致硬盘损坏,其实这种说法是比较不可信的,相对于是被攻击导致硬盘损坏还是大量I/O操作而产生的后果,我个人更倾向于后者。

当然,如果大家比较关注5d6d的话,应该知道前几天有一天时间5d6d无法访问,根据非官方消息是因为硬盘坏了,而损坏的原因我想当然是因为大量 用户大量进行I/O操作了,试想,我们一个论坛,进行磁盘I/O操作的仅为管理员进行更新缓存时进行的,而5d6d每一个会员就是一个管理员,试想下对磁 盘是多大的考验?所以我并不奇怪5d6d的硬盘坏了。

当然,也许在读这篇文章的很多朋友都有使用过BT,也听说过BT对硬盘很伤,不能开多,而所谓伤害,和这里指的都是同一样东西,大量I/O导致磁盘出现碎片甚至出现磁盘坏道。

这里都是说些很实际的例子来说明问题了。

三、伪静态的坏处

当然犹如一篇文章的作者所说的:"如果流量稍大一些使用伪静态就出现CPU使用超负荷,我的同时在线300多人就挂了,而不使用伪静态的时候同时在线超500人都不挂,我的ISS数是1000。”

确实是这样的,由于伪静态是用正则判断而不是真实地址,分辨到底显示哪个页面的责任也由直接指定转由CPU来判断了,所以CPU占有量的上升,确实是伪静态最大的弊病。

四、我们应该选择伪静态还是真静态?

我们来总结一下:

1、使用真静态和假静态对SEO来说没有什么区别
2、使用真静态可能将导致硬盘损坏并将影响论坛性能
3、使用伪静态将占用一定量的CPU占有率,大量使用将导致CPU超负荷
4、最重要的一点,我们要静态是为了SEO

所以:
1、使用真静态的方法可以直接排除了,因为无论怎么生成,对硬盘来说都是很伤的。
2、既然真伪静态的效果一样,我们就可以选择伪静态了。
3、但是伪静态大量使用会照成CPU超负荷。
4、所以我们只要不大量使用就可以了。
5、既然静态只是给SEO看的,我们只需要伪静态给SEO就行了,不需要给用户使用。
6、所以我们只要在专门提供给SEO爬的Archiver中使用伪静态就可以了。
7、谢谢大家耐心看我写的文章。
8、有何不解的地方或是有不同的看法欢迎提出。

五、关于伪静态和真静态的评论

真正的静态化和伪静态还是有本质的区别的。为浏览用户处理一个纯粹htm和一个调用多个数据的php在CPU的使用率方面明显前者少。记得原来有个 人说html下载硬盘读写频繁,他这么说好像读取数据库不用读写磁盘似的,何况还有一大堆缓存的零散php也是放在硬盘的,这些读取不用磁盘操作么?可 笑。

读取单个htm+图片Flash等附件就可以实现的目的,何苦要读数据库又要读php缓存文件又要重新整合数据输出再+图片 Flash等附件这么大费周章呢?CMS首页不需要很多的互动的,论坛那一套不应该拿到这里来用,相反应该更多考虑的是:美观!兼容!信息的直观!性能! 还有稳定!

让你成为PHP开发高手的五种方法

国外著名站长blog开发者指南developertutorials.com发表了一篇《5种方法让您成为php开发高手》,笔者简单翻译了一下,有错误请批评指教。原文地址http://www.developertutorials.co ... r-php-developer-36/                  

    我们经常会在聊天室或论坛里遇到php初学者问各种各样的有关php的问题,如果问题过于简单,人们往往回复为“看手册”、“先学学PHP吧”、“我们可不能手把手教你”或者就一句“你应该学的差不多再来问”。怎样才能学的差不多?这篇帖子将教给初学者5种PHP的学习方法,可以提高效率,少写些代码,更佳的网络应用。用PHP开发程序总是要不断的学习:新的函数、新的框架、新的设计面版、新的代码文档样式。下面介绍一些最佳的PHP进阶方法。

1、读手册

    我确实不太注重这个,因为手册中的东西实在是太多了。特别是字符串、数组函数。手册用起来比较方便,当你阅读手册时你常常会发现一些核心函数可以替代以前的程序做的很多无用功。手册是你的好伙伴。  

2、浏览代码

    PHP有很多的开放代码资源,为什么不利用呢?下载一个共享的PHP应用程序并读代码。可能越大的工程越好,因为有着更完整的体系和结构,同时也有完整的文档可供参考。如果你无从起步不妨查看www.sourceforge.net这个网站。

3、学习新的框架  

    PHP框架数不胜数,很多都是开源而且多数网上可以查到。可以先上最全面的网站www.phpframeworks.com,其中有一个很好的PHP框架列表。对PHP框架的应用很多,你的下一个程序可能就需要一个新的框架,你一定会发现它在工程有着广泛的应用。

4、研究

    你一定听说过不少PHP术语,从OOP到MVC、KISS到DRY、YAML到INI、REST到XML-RPC,有数百科技概念与你的工作有关。你可能已经对他们有了一个基本的认识,可是你真的知道它们是什么或者对你有什么意义吗?花点时间研究一下,wikipedia是一个开始的好地方,一定可以让你学到一些新东西。

5、学习OOP

    可能接下来的这些方法与以前的略显不同,但OOP确实比想象的还重要。你知道PHP5的OOP吗?举例来说,抽象类、关键词、静态和属性,“保护的”接口修改?即使是资深的PHP程序员可能都不懂这些。如果你能够应用OOP就可以节省很多开发的时间。
这就是5条简单易懂但是意味深长的成为一个出色PHP开发人员的方法。

goosh 非官方Google Shell 很酷

今天发现了goosh这个很酷的东西:


goosh是由Stefan Grothkopp开发出一个超级酷的模拟命令行模式的Google,它模拟Linux的操作界面,目前可以在浏览器上执行,打开它以后输入关键词就可以进行搜索.


键入help还可以看到更多功能,除此之外它还支持Wikipedia的文字输出,当然,它不支持图片.试试看就知道,效果的确很棒.

访问很酷的:goosh.org

Linux常用命令名或缩写的由来

man: Manual
pwdPrint working directory
suSwith user
cdChange directory
lsList files
psProcess Status
mkdirMake directory
rmdirRemove directory
mkfs: Make file system
fsck:File system check
cat: Concatenate
uname: Unix name
df: Disk free
du: Disk usage
lsmod: List modules
mv: Move file
rm: Remove file
cp: Copy file
ln: Link files
fg: Foreground
bg: Background
chown: Change owner
chgrp: Change group
chmod: Change mode
umount: Unmount
dd: 本来应根据其功能描述“Convert an copy”命名为“cc”,但“cc”已经被用以代表“C Complier”,所以命名为“dd”
tar:Tape archive
lddList dynamic dependencies
insmodInstall module
rmmodRemove module
lsmodList module

文件结尾的"rc"(如.bashrc、.xinitrc等):Resource configuration
Knnxxx / Snnxxx(位于rcx.d目录下):K(Kill);S(Service);nn(执行顺序号);xxx(服务标识)
.a(扩展名a):Archive,static library
.so(扩展名so):Shared object,dynamically linked library
.o(扩展名o):Object file,complied result of C/C++ source file
RPMRed hat package manager
dpkgDebian package manager
apt
Advanced package tool(Debian或基于Debian的发行版中提供)

To be continued...                                  

一台机器上多操作系统安装的原理

一、基本概念
主引导记录(Master Boot Record,MBR):512字节,位于硬盘的第一个扇区;可存放一小段程序及主分区表。
扩展引导记录(Extended Boot Record,EBR):512字节,位于扩展分区的第一个扇区,存放逻辑分区信息。
分区引导区(Partition Boot Record,PBR):512字节,位于每个非扩展主分区及每个逻辑分区的第一个扇区;可存放小段程序。
活动分区(Active Partition):可将所有主分区和逻辑分区中的一个标识为Active,表示系统启动时即加载运行其PBR程序的分区。
  
二、一般单操作系统启动过程
1. BIOS加载并启动保存在硬盘MBR中的引导程序,该引导程序一般在操作系统安装时写入
2. MBR引导程序扫描所有分区表,找出活动分区(Windows MBR程序只会在MBR中的分区表中查找活动分区,即Windows只能安装在主分区;Linux无此限制)

 
3. MBR引导程序加载并启动保存在活动分区PBR中的引导程序
4. 活动分区PBR中的引导程序加载并启动安装在其上的操作系统(例如对Win98,定位并执行io.sys;对WinXP,定位并执行 ntoskrnl.exe;对于Linux,定位并执行vmlinuz-xxx内核映像)。显然PBR引导程序与操作系统密切相关,一般在操作系统安装时 写入。
总结为:BIOS --> MBR code -- > PBR code --> OS files
  
三、修改标准过程实现按需启动指定操作系统
使用Boot Loader软件置换MBR中的引导程序或PBR中的引导程序,如Windows的NT Boot Loader,Linux下的Lilo、Grub等。Windows NT Boot Loader一般用于在一台机器上安装多个Windows系统;Lilo或Grub用于在一台机器上安装多个Linux系统或同时安装Linux和 Windows系统。
Lilo:http://www.linux.org/docs/ldp/howto/LILO.html
Grub:http://www.gnu.org/software/grub/
Windows NT Loader:http://www.tburke.net/info/ntldr/ntldr_hacking_guide.htm
  
四、具体步骤
Google "dual-boot"或"multibooting"(http://www.google.com/search?hl=en&newwindow=1&q=dual-boot+%7C+multibooting&btnG=Search)。了解基本原理后,对具体操作步骤自然会得心应手。