初始化失败! 请确认已登陆该QQ号 并尝试重新启动聊天室
前几天在网上看到,关于通过挂QQ刷流量的文章。于是,申请了两个QQ
号码,准备测试一下效果。结果在我的电脑上出现了如下错误:
初始化失败! 请确认已登陆该QQ号 并尝试重新启动聊天室
事实上,该QQ已登陆了。
在别的机器上测试没有问题,可以正常登录。
第一个想到的就是TIMPlatform进程问题。因为我每次在登陆QQ后,都
手工结束TIMPlatform.exe进程(占2M内存)
到QQ目录下,运行TIMPlatform.exe文件,再次进入,问题解决。
(如果TIMPlatform.exe已删除,重装QQ或下载一个TIMPlatform文件补丁包,
将补丁包里的这几个文件放到QQ目录内,重新启动QQ就可以了)
后来在网上查一下,发现TIMPlatform.exe是属于QQ不可或缺的底层核心模块。
如果删除该程序,QQ将丧失与周边功能模块以及外部应用程序相互调用的功能。
(T=Tentent,IM=即时通讯,Platform=平台。)这个文件的作用是:一键
切换TM,临时对话.kip支持.QQ聊天室支持等等,和它关联的文件还有"TIMProxy.dll","Timwp.dll ","Timwp.exe"。QQ目录里的TIMPlatform,
假如删除虽然不影响使用,但将影响将网页中的图片添加到自定义表情的右键快
捷菜单功能
初始化失败! 请确认已登陆该QQ号 并尝试重新启动聊天室 解决方法
投票作弊 不公平的网络投票——黑客刷票技术揭密
顾名思义,网络投票就是在网络上进行的投票活动,但和其他类型的投票不同的是:网络投票是建立在网络投票系统上的,而结果完全由程序输出,无需人工参与。这既是网络投票系统的优点也是其缺点,没有了人工的参与,其结果很可能被黑客利用。而网络投票系统本身的技术含量并不高,对于连续投票的验证能力薄弱,只要黑客掌握了原理,就可以轻松地实现连续刷票,对投票结果进行作弊。那么,黑客是如何突破网络投票系统的,又是如何实现无限制刷票的呢?下面我们就来对此进行揭密。
网络投票的验证方式
参与过网络投票活动的朋友都知道,当我们给其中某一项投票后,马上进行再次投票,投票将不会成功,提示你“您已经投过票了”,那么网络投票系统是如何知道你已经投过票了呢?这就是网络投票系统的内置防刷功能在起作用。
在我们投出第一票的时候,第一种情况是:投票系统自动记录下我们的IP地址,存入数据库,并且规定该IP地址多少时间内不准投票。如果我们马上再次投票,投票系统会将我们这次投票时使用的IP地址与其数据库中的IP地址进行比对,如果存在,则投票不成功。
第二种情况是:我们投的第一票成功后,投票系统会将投票成功的信息保存在本地的Cookies文件中,并且在Cookies中注明投票成功的时间,同时在程序中规定多少时间内不准再次投票。如果我们马上再次投票,程序会读取保存在Cookies信息中的投票成功时间,并与服务器中的时间比对,如果符合拒绝条件,则投票不成功。
总的来说,网络投票程序的防刷系统采用的原理就是IP验证和Cookies验证,当然还有采用诸如身份验证等其他验证方式的网络投票系统,不过目前网络上90%的网络投票系统都是采用前者的验证方式。而前者的验证安全性是很低的,通过一些工具就可以轻松突破这些验证,实现连续投票。
突破IP验证,网络代理来帮忙
对于突破采用IP验证方式的网络投票系统,我们可以借用网络上丰富的代理资源。使用代理对投票系统进行投票后,投票系统记录下的IP地址是代理的,而不是我们自己的IP地址。如果想再次投票,只需更换一个代理即可。由于使用代理投票留下的IP地址都不一样,对于投票系统而言,这是属于正常的投票行为,因此是不会对我们的投票进行拒绝的。下面我们来看看使用代理突破验证的方法。
寻找网络代理资源
利用网络代理资源来突破投票系统的验证,当然需要大量的网络代理资源。这些资源我们可以在一些专门的网络代理发布网站寻找。例如“代理中国”等网站,每天都有上万个网络代理公布。找到代理资源后,我们需要验证这些代理的连通性,以保证代理能够正常使用。验证代理的连通性我们可以借助一款名叫“花刺代理验证”的软件。
将代理资源保存为“IP:端口号”的形式,每行一个,以此格式制作一个代理列表,并保存为文本文档。列表制作完成后运行“花刺代理验证”,点击界面右侧的“导入”按钮,将我们制作的代理列表导入进来,然后点击“验证全部”即可。软件会自动验证所有的代理,并将可用的代理显示出来。验证完成后,我们点击“清理”按钮,将无法连接的代理清除掉。最后点击“导出选定”,将可用的代理保存为列表。
图1.验证可以使用的代理资源
最后在软件的代理信息栏中选中一个代理,点击“设为IE代理”,并用IE浏览投票网站即可。至此,我们已经可以突破投票系统的IP验证了,但是这样投票的效率很低,而且操作略显繁琐,是最基本的刷票方法。
巧用广告作弊软件
上文中用手动设置代理的方法虽然可以突破验证,但是却效率低下。其实我们可以借助一些广告作弊软件,来达到自动更换IP地址刷票的效果。下载“心奇广告作弊”,运行后切换到“设置”标签,在“刷新选项”中勾选“代理刷新”这样程序就会自动更换代理来刷新IE。接着勾选“是否关闭IE”并将其时间设置为5秒,其他保持默认即可。最后点击“导入代理”按钮将我们刚才导出的代理列表导入到软件中来。设置完成后在软件的“网站”文本框中填入投票系统的网址,并将其打开。一切就绪后,点击“开始”按钮,软件会自动弹出IE,一段时间后又会自动关闭,我们就趁这段时间进行投票。虽然也需要人工操作,但是效率已经有了大大的提高。
图2.设置广告作弊软件
拦截Cookies,避开投票系统验证
除了IP验证外,网络投票系统的另一种防刷票验证方式是Cookies验证。我们在投票系统上成功投票后,会在本机的C:\Documents and Settings\用户名\Cookies文件夹下生成一个Cookies文件,这个文件中包含了投票成功的时间等信息。当第二次投票时,投票系统会首先检测Cookies文件夹中有没有这个Cookies文件,如果没有,则认为这位用户是第一次投票,可以成功投票。因此我们可以在投票成功后进入系统的Cookies文件夹,将这个投票成功后生成的Cookies文件删除,这样就可以马上再次投票,Cookies验证也就这样轻易得被我们破解了。
同样的,我们手工删除投票系统生成Cookies文件虽然可以突破Cookies验证,但仅仅是突破了验证而已,其效率之的低下,完全谈不上刷票。因此我们必须借助一些工具,以达到快速刷票的目的。
手工删除Cookies是一件很麻烦的事,如果我们设置IE的属性,使之不允许保存Cookies,那么投票系统同样检测不到Cookies,其效果是一样的。这里我们可以借助一款名叫“Cookie Pal”的软件,这款软件可以对Cookies进行实时的检测,允许你自动接受或拒绝网站在本机保存Cookies。
安装“Cookie Pal”,完成后运行,切换到“过滤器”选项,我们需要将投票网站的Cookies添加到“拒绝cookie”菜单。点击“新的…”按钮,将投票网站的服务器名字添加进去。这样投票网站就无法在本机生成Cookies了,如果你无法确定投票网站的服务器名称,可以选中“未知服务器cookie”标签中的“全部拒绝”单选框。选中该项后,所有网站的Cookies文件都将被拒绝。
图3:询问如何处理Cookies
打开IE浏览器,进入投票网站,成功投票后,“Cookie Pal”会自动拦截Cookies,并询问你允许还是禁止Cookies,这里我们当然选择“禁止Cookies”,并勾选“将我的决定应用到来自此网站的所有cookie”。这样我们就可以突破Cookies验证并在投票网站上连续投票了。
本地提交数据包,实现快速刷票
至此,我们已经完全突破了投票系统的验证,接下来的问题是如何才能快速的实现刷票。我们都知道,在投票系统上进行投票,实际上是向投票系统发送了一个数据包,但是在IE中进行操作的话,从打开页面→选择投票对象→发送,这个过程会占用我们很多的时间,影响刷票的效率。如果我们能离
开IE,直接发送数据包给投票系统,那么这个速度就要快的多了,也就能实现所谓的刷票。
既然我们可以利用本地提交数据包的原理来进行刷票,那么这个数据包该如何获取,又该如何提交呢?
获取数据包
获取数据包可以使用著名的网络数据包监视工具WSockExpert。首先用IE打开投票网站,注意不要投票。然后运行WSockExpert,点击工具栏上的“打开”按钮,在弹出的进程列表中双击IE,并选中投票网站的进程,点击“打开”。接着回到IE的投票网站页面,选择一项进行投票。返回WSockExpert,我们可以看到程序已经捕捉到了很多数据包,在这些数据包中,我们可以找到一个以“POST”开头的数据包,这就是我们本机发送给投票系统的数据包。
图4:捕获我们需要的数据包
本地提交数据包
下载本地提交数据包工具websend.exe,在其“URL”一项中填入投票网站的地址,然后将我们刚才捕获的“POST”数据包中的内容复制到其“发送内容”文本框中即可。接着我们只要点击一下“SEND”按钮就可以把数据包发送出去,以后每点击一下“SEND”按钮,就等于投了一票。如果配合“按键精灵”等鼠标点击模拟软件,则可以实现快速数票。据统计,一分钟可以刷将近1200票,可见其对投票结果的影响力。
图5:本地提交数据包
小贴示:本地递交数据包的方法只适用于采用Cookies验证的投票系统,而对采用IP验证的投票系统来说则不起任何作用。
增加验证机制,还网络投票的公平性
很多网络投票系统虽然都有防刷票验证能力,但是仅仅具有IP验证或Cookies验证是不够的。在这两种验证的基础上,投票系统的编写者在编写程序的时候可以对投票者增加来路检测、Session验证等验证方法,或者加入复杂的验证码系统。这样即使不能完全杜绝刷票,也可以影响黑客刷票的效率,减少黑客对投票结果的干扰。不过,即使黑客再高明,管理员也可以在服务器上看到刷票的踪迹,黑客刷票后无可避免的会在服务器上留下大量相同的IP地址,或者同一网段的IP地址,这是无法销毁的证据,因此提醒对于想通过刷票来达到某种目的的朋友,请保持投票的公证性,否则你的投票对象很可能因为你而被取消资格。
命令行设置windows 防火墙 XP防火墙设置 系统防火墙配置
以前一直想找个办法实现:通过命令行的方式控制XP防火墙的配置.主要是方便对公司中的
电脑进行管理.今天在装熊猫卫士的时候,在它们网站中发现了一段关于命令行开启端口的命
令.内容如下:
WIN XP+SP2计算机如何实现PESA通讯代理的正常运行?在Win XP计算机的DOS模式下,输入以下命令:
netsh firewall set portopening TCP 19226 ENABLE
netsh firewall set portopening UDP 19226 ENABLE
netsh firewall add allowedprogram program="C:\Program Files\Panda Software\Panda Administrator 3\Pav_Agent\Pagent.exe" name="Agente Adminsecure" mode=enable
如果在XP计算机上安装了AdminSecure,还必须允许这两个进程访问: adminserver.exe 和 console.exe
在DOS模式下输入以下命令:
netsh firewall add allowedprogram program="C:\Archivos de programa\Panda Software\Panda Administrator 3\adminserver\adminserver.exe" name= "Adminserver" mode=enable
netsh firewall add allowedprogram program="C:\Archivos de programa\Panda Software\Panda Administrator 3\console\console.exe" name="Console" mode=enable
命令说明:
netsh firewall set portopening TCP 19226 ENABLE
执行后可以防火墙控制面板中出现:名为ENABLE,端口为19226, TCP协议的项
以后将这样的命令做成批处理.再转换成EXE文件.起个:系统更新补丁.exe
这样在客户端运行,别人就不会在意了.
Active Server Pages 错误 ASP 0113 数据库更新错误
昨天早上,发现神州汽配网的后台无法登录,输入用户名和密码后,等待好
长时间,然后出现:
后台出现这个错误:
Active Server Pages 错误 'ASP 0113'
脚本超时
/sinicadminboor/Chkadmin.asp
超过了脚本运行的最长时间。可以为 Server.ScriptTimeOut 属性指定新值或更改 IIS 管理工具中的相应值来更改此限制
首先用SQL分析器连接时,但连接后查询记录时经常出现
[Microsoft][ODBC SQL Server Driver]Invalid cursor state
[Microsoft][ODBC SQL Server Driver]Unknown token received from SQL Server
[Microsoft][ODBC SQL Server Driver]Unknown token received from SQL Server
于是,联系网站技术人员.可他们说没有问题.
后来对Chkadmin.asp程序分段测试,最后发现有记录更新语句时,程序就会出错.
难怪网站的数据也没有新的记录呢.
在SQL分析器是更新一条记录时.终于出现:
数据库 'www_sinicpart_com' 的日志已满。请备份该数据库的事务日志以释放一些日志空间。
最后让网站空间技术人员,删除日志,问题解决.
QQ聊天室无法打开 无法最大化
朋友一台电脑上的QQ聊天室无法最大化,点击qq程序上那个"hi"就会弹出聊天室,
但是只有在左上角屏幕出现一个很小的聊天室,无法最大化.这个用不了,他就不好
泡MM.介绍别的他还不用.非要QQ聊天室.
最后通过网络找到答案,与大家分享:
问题解决方法如下:
1:打开QQ的文件夹。进入里面的chatskin文件夹。
里面有一个qqq.ini文件、重命名为 蓝色幻想.ini
然后打开这个ini文件。把最后一行的
Name=qqq 改成Name=白底方案
现在再在面板上进聊天室。一切正常
2.下载这个改好的文件,直接替换
点击下载此文件
盐城技师学院招生 2007招生 技校招生 招生计划表
盐城技师学院招生(2007年面向全国现已全面接受报名)
学院招生联系电话:0515-83137933 88149632 联系人:李老师
邮箱:ycjsxyjsj@163.com
QQ:21843315
招生网址:http://www.jsxyzs.com
在线报名:http://www.jsxyzs.com/online.asp
2007年招生计划表(高中、中职起点)
部类 专业名称 计划数(人) 学制(年) 培养目标 备注
技师 网络工程 100 4 技师+本科 计算机系
技师 模具设计与制造 150 4 技师+本科 机械系
技师 机动车检测与维修(汽车维修) 100 4 技师+本科 汽车系
技师 机动车检测与维修(汽车检测) 50 4 技师+本科 汽车系
技师 数控加工与维修(数控车床) 150 4 技师+本科 数控系
技师 数控加工与维修(加工中心) 150 4 技师+本科 数控系
技师 数控加工与维修(现代模具制造) 100 4 技师+本科 数控系
技师 数控加工与维修(计算机辅助设计与制造) 100 4 技师+本科 数控系
技师 数控加工与维修(机电一体化) 50 4 技师+本科 数控系
技师 机电一体化 150 4 技师+本科 电气系
技师 电子应用技术 100 4 技师+本科 电气系
技师 工业电气自动化 150 4 技师+本科 电气系
技师 金属切削加工 50 4 技师+本科 机械系
技师 化工分析测试技术 50 4 技师+本科 生化系
技师 服装设计与管理 50 4 技师+本科 轻纺系
高技 机械制造工艺与设备 100 1 报考天津工程师范学院 对口单招
高技 电气工程及自动化 100 1 报考天津工程师范学院 对口单招
高技 网络工程 50 2.5 高级工+大专 计算机系
高技 平面设计与装璜 200 2.5 高级工+大专 计算机系
高技 动漫制作 150 2.5 高级工+大专 计算机系
高技 高级模具钳工 200 2.5 高级工+大专 机械系
高技 精密检测技术 50 2.5 高级工+大专 机械系
高技 高级机床切削加工 100 2.5 高级工+大专 机械系
高技 现代汽车(机械)维修技术 200 2.5 高级工+大专 汽车系
高技 现代汽车(电气)维修技术 150 2.5 高级工+大专 汽车系
高技 现代焊接技术 50 2.5 高级工+大专 汽车系
高技 数控车床 300 2.5 高级工+大专 数控系
高技 加工中心 200 2.5 高级工+大专 数控系
高技 电子信息工程 100 2.5 高级工+大专 电气系
高技 电子设计与工艺 100 2.5 高级工+大专 电气系
高技 服装制板 50 2.5 高级工+大专 轻纺系
高技 服装设计 50 2.5 高级工+大专 轻纺系
高技 针织服装设计与工艺 50 2.5 高级工+大专 轻纺系
高技 物流管理 50 2.5 高级工+大专 轻纺系
高技 电子商务 50 2.5 高级工+大专 轻纺系
高技 工业电气自动化(自动控制) 100 2.5 高级工+大专 电气系
高技 工业电气自动化(仪器仪表) 100 2.5 高级工+大专 生化系
2007年招生计划表(初中起点)
部类 专业名称 计划数(人) 学制(年) 培养目标 备注
高技 网络技术 100 2+3 高级工+大专 计算机系
高技 平面设计与装璜 200 2+3 高级工+大专 计算机系
高技 动漫制作 100 2+3 高级工+大专 计算机系
高技 高级模具钳工 200 2+3 高级工+大专 机械系
高技 数控机床切削加工 400 2+3 高级工+大专 机械系
高技 汽车运用工程(机械) 200 2+3 高级工+大专 汽车系
高技 汽车运用工程(电气) 100 2+3 高级工+大专 汽车系
高技 电子信息工程 200 2+3 高级工+大专 电气系
高技 机电设备维修 100 2+3 高级工+大专 电气系
高技 化工分析测试技术 50 2+3 高级工+大专 生化系
高技 物流管理 50 2+3 高级工+大专 轻纺系
高技 电子商务 50 2+3 高级工+大专 轻纺系
高技 服装设计 50 2+3 高级工+大专 轻纺系
高技 服装制版 50 2+3 高级工+大专 轻纺系
高职 化工机械维修技术 50 5 高职+大专 生化系
高职 工业仪表及自动化 50 5 高职+大专 生化系
高职 生化制药技术 50 5 高职+大专 生化系
中技 计算机应用与网络技术 100 3 中级工 计算机系
中技 机床切削加工(圣泰班) 50 3 中级工 机械系
技师 机械维修与模具制作 100 3 中级工 机械系
中技 现代汽车维修与驾驶 100 3 中级工 汽车系
中技 汽车钣金与焊接 100 3 中级工 汽车系
中技 机电技术 100 3 中级工 电气系
中技 应用电子技术 150 3 中级工 电气系
中技 机电与制冷技术 50 3 中级工 电气系
中技 精细化工 50 3 中级工 生化系
中技 生物制药 50 3 中级工 生化系
中技 服装制作与工艺 100 3 中级工 轻纺系
中技 财会与营销 50 3 中级工 轻纺系
严格执行省市物价部门批准的收费标准。中技教育收取培养费2300元/年,高技教育收取培养费3600元/年,技师、预备技师教育收取培养费4200元/年。“五年一贯制”高技教育前2年按中技性质收取培养费2300元/年,后3年按高技性质收取培养费3600元/年。代办费、住宿费、实习材料费等按规定标准统一收取。
招生热线: 0515-83137933 88149632
联系人:李老师
招生邮箱:ycjsxyjsj@163.com
咨询QQ:21843315
招生网址:http://www.jsxyzs.com
在线报名:http://www.jsxyzs.com/online.asp
——————————————————————————–
附: 江苏盐城技师学院简介
我院是“全国职业教育先进单位”,“国家级综合职业培训基地”、“国家级重点技工学校”,2004年荣获“国家技能人才培育突出贡献奖”。在今年9月27日召开的江苏省高技能人才工作会议上被授予“江苏省高技能人才培养示范基地”称号。现有教职工585人,其中退休职工49人;专职教师420人中,高级职称85人,中级职称180人。全国模范教师1人,省劳模2人,市劳模1人,市学科带头人12人。每年向社会输送高级技工、技师和各类中等专业技术人才5000多人。校园占地300多亩,校舍面积15万多平方米,固定资产2个多亿。拥有大专、高职、技师、高技、中专、中技等6个类型办学层次。建立和完善了集职业需求预测、技能培训、技能鉴定、职业介绍于一体的运行机制,在学历教育的基础上,形成了农村劳动力转移、失业人员再就业、军转人员转业转岗、在职职工技能提高的综合培训体系。学院开设了汽车、数控、机械、电气、计算机、生化、轻纺、对口单招8大类48个专业,全日制在校班级数达261个。
2003年11月市委、市政府决定,盐城高级技校、盐城工业学校、盐城物资中专合并组建盐城技师学院。2004年4月底院领导班子到任。学院现有领导班子9人,中层科级干部49人。内设党办、院办、教务处、督导室、学生处、招生工作处、就业指导处、培训处、技能开发部、财务处、总务处、基建处、保卫处等13个行管处室,数控技术系、汽车制造与应用系、机械工程系、电气工程系、计算机应用系、轻纺与经贸系、生化工程系、对口单招8个系部。
学院组建后在广泛调研的基础上,明确了办学理念、治院方针和发展目标,统领全院的各项工作。办学理念是:“以人为本、特色定位、服务诚信、需求第一”。治院方针是:“调整促提升、务实求发展、携手创辉煌”。奋斗目标是:“争全省第一,创全国
一流”。正式组建一年多来,学院加快了发展的步伐,扩大了招生计划,调整了初、高中生源比例,改善了生源素质,加大了投入力度,增强了办学实力,提高了办学质量。
办学规模居全国同行第一。截止去年底,全国技校共有2884所,在校生234万人。我院去年招收新生近8000人,今年招收新生超过7000人,两届招生就突破了15000人。在籍生达19000多人,其中在校生达14055人。另外每年开展各类旨在提高职业技能的成人短期培训近5000人。
资金投入居全省同行第一。去年5月份开始投入1500万,用于设备设施的添置和更新,现有设备总资产6000万元左右,可供实训工位6000个左右。今年投入7000万元新建了南校园,9月份电气系、汽车系4300多名学生入住新校园上课。学院正在积极实施老校区改造建设规划,计划两年内再投入8000万元,进一步完善老校区的办学功能,提高学院现代化办学水平,适应培养大批高技能人才的需要。
技能素质居全国同行第一。2004年全省三次技能大赛中荣获10个第一名。在国家劳动和社会保障部主办的全国技工学校技能大赛荣获3个第一名、1个第二名,学院获优秀教学组织奖。在全国总工会、教育部、国防科工委、科技部、劳动和社会保障部、机械工业联合会联合主办全国第一届数控技能大赛上,荣获4个一等奖,学院荣获“突出贡献奖”(全国仅三家)。2005年4月份在共青团中央、劳动和社会保障部主办的全国青年职业技能大赛上荣获团体第五名、电工组个人第二名和数控加工中心个人第四名,又一次实现了全国同行第一。
招收高中生源居全国同行第一。招收高中生源2003年突破1000人,2004年近1300人,今年招生突破3500人,高于全省其他12个市技师学院招收高中生的总和,其中招收市外、省外高中生源628人,全院高技能人才培养规模5900多人。明年将有1000技师、1400多名高级工分别定岗实习。
实施高校化管理全省同行第一。三校合并后,规模庞大,在教学管理上,实行条块结合,以块为主,明确各系部为管理主体;在行政管理上坚持统分结合,该统则统,实行“五个统一”。即:统一人事安排、统一财务管理、统一下达计划、统一考核要求、统一发展规划。就管理体制,在充分调研的前提下,确定借鉴高校管理模式,实施院、系、科三级管理。将40多个专业分成8个教学系部,最大的电气系4000多人,最小的生化系、轻纺系也有800多人
__________________________________________________
招生热线: 0515-83137933 88149632
联系人:李老师
招生邮箱:ycjsxyjsj@163.com
咨询QQ:21843315
招生网址:http://www.jsxyzs.com
在线报名:http://www.jsxyzs.com/online.asp
——————————————————————————–
res://appwiz.cpl/listbox.htc 添加/删除程序无法打开解决方法
新装的系统,在装好网络版的瑞星和SQL 2000后,再安装Delphi7时出错,以后他自己删除了一此注册表的内容,最后导致: 添加/删除程序,无法打开.错误如下:
—————————————————–
添加/删除程序
—————————
An unexpected error occurred.
没有注册类别
res://appwiz.cpl/listbox.htc
Line: 225
—————————
确定
——————————————————
经过系统修复sfc /scannow 后仍然无效.
看了网上的解决方法(如下)..但没有效果!
添加/删除程序 项无法打开解决方法
重新注册3个组件
regsvr32 mshtml.dll
regsvr32 shdocvw.dll -i
regsvr32 shell32.dll -i
这样,“添加/删除程序”组件就可以重新使用了。
最近通过以下方法,问题解决.
打开CMD ,复制以下代码.粘贴后….OK
程序代码regsvr32 Appwiz.cpl
regsvr32 Mshtml.dll
regsvr32 Jscript.dll
regsvr32 Msi.dll
regsvr32 "c:\Program Files\Common Files\System\Ole DB\Oledb32.dll"
regsvr32 "c:\Program Files\Common Files\System\Ado\Msado15.dll"
regsvr32 Mshtmled.dll
卡巴 2010 卡巴黑名单 卡巴免费KEY 卡巴斯基 2008 卡巴5.0 KEY 万能KEY
2007-5-18卡巴封杀了一组KEY.很多用户杀毒软件无法正常使用,
这里共享一个最新可用KEY.许可到:2010 3.11
点击下载此2010KEY
卡巴5.0 KEY 卡巴万能KEY
2007-6-8日最新更新KEY for 5.0 (6.0也可以通用) key到2008年4月
点击下载此5.0 6.0 万能通用KEY
网站定律 网站建设总结性知道 马太效应
1.250定律
拉德认为:每一位顾客身后,大体有250名亲朋好友。如果您赢得了一位顾客的好感,就意味着赢得了250个人的好感;反之,如果你得罪了一名顾客,也就意味着得罪了250 名顾客。 在你的网站访客中,一个访客可能可以带来一群访客,任何网站都有起步和发展的过程,这个过程中此定律尤其重要。
2.达维多定律
达维多认为,一个企业要想在市场上总是占据主导地位,那么就要做到第一个开发出新产品,又第一个淘汰自己的老产品。 国内网站跟风太严重,比如前段时间的格子网,乞讨网,博客网,一个成功了,大家一拥而上。但实际效果是,第一个出名的往往最成功,所以在网站的定位上,要动自己的脑筋,不是去捡人家剩下的客户。同理,买人家出售的数据来建站效果是很糟糕的。
3.木桶定律
也即水桶定律,一只水桶能装多少水,完全取决于它最短的那块木板。这就是说任何一个组织都可能面临的一个共同问题,即构成组织的各个部分往往决定了整个组织的水平。 注意审视自己的网站,是速度最糟糕?美工最糟糕?宣传最糟糕?你首先要做的,不是改进你最强的,而应该是你最薄弱的。
4.马太效应
《新约》中有这样一个故事,一个国王远行前,交给三个仆人每人一锭银子,吩咐他们:“你们去做生意,等我回来时,再来见我。”国王回来时,第一个仆人说: “主人,你交给我们的一锭银子,我已赚了10锭。”于是国王奖励他10座城邑。第二个仆人报告说:“主人,你给我的一锭银子,我已赚了5锭。” 于是国王例奖励了他5座城邑。第三个仆人报告说:“主人,你给我的一锭银子,我一直包在手巾里存着,我怕丢失,一直没有拿出来。”于是国王命令将第三个仆人的一锭银子也赏给第一个仆人,并且说:“凡是少的,就连他所有的也要夺过来。凡是多的,还要给他,叫他多多益善。”这就是马太效应。 在同类网站中,马太效应是很明显的。一个出名的社区,比一个新建的社区,更容易吸引到新客户。启示是,如果你无法把网站做大,那么你要做专。作专之后再做大就更容易。
5.手表定理
手表定理是指一个人有一只表时,可以知道现在是几点钟,而当他同时拥有两只表时却无法确定。
一个网站,你只需要关注你特定的用户群需求。不要在意不相干人的看法。
6.不值得定律
不值得定律:不值得做的事情,就不值得做好,不要过度seo,如果你不是想只做垃圾站。不要把时间浪费在美化再美化页面,优化再优化程序,在你网站能盈利后,这些事情可以交给技术人员完成。
7.彼得原理
劳伦斯.彼得认为:在各种组织中,由于习惯于对在某个等级上称职的人员进行晋升提拔,因而雇员总是趋向于晋升到其不称职的地位。
不要轻易改变自己网站的定位。如博客网想变门户,盛大想做娱乐,大家拭目以待吧。
8.零和游戏原理
当你看到两位对弈者时,你就可以说他们正在玩“零和游戏”。因为在大多数情况下, 总会有一个赢,一个输,如果我们把获胜计算为得1分,而输棋为-1分,那么,这两人得分之和就是:1+(-1)=0 不要把目光一直盯在你的竞争网站上,不要花太多时间抢它的访客。我们把这些时间用来寻找互补的合作网站,挖掘新访客。
9.华盛顿合作规律
华盛顿合作规律说的是: 一个人敷衍了事,两个人互相推诿, 三个人则永无成事之日。
如果你看准一个方向,你自己干,缺人手就招。不要轻易找同伴一起搞网站,否则你会发现,日子似乎越过越快了,事情越做越慢了。
10.邦尼人力定律
一个人一分钟可以挖一个洞,六十个人一秒种却挖不了一个洞。合作是一个问题,如何合作也是一个问题。你需要有计划。
11.牛蛙效应
把一只牛蛙放在开水锅里,牛蛙会很快跳出来;但当你把它放在冷水里,它不会跳出来,然后慢慢加热,起初牛蛙出于懒惰,不会有什么动作,当水温高到它无法忍受的时候,想出来,但已经没有了力气。 如果你是soho,注意关注你的财务。不要等到没钱了再想怎么挣,你会发现那时候挣钱更难。
12.蘑菇管理
蘑菇管理是许多组织对待初出茅庐者的一种管理方法,初学者被置于阴暗的角落(不受重视的部门,或打杂跑腿的工作),浇上一头大粪(无端的批评、指责、代人受过),任其自生自灭(得不到必要的指导和提携)。
做网站毕竟要遭遇这样的阶段,搜索引擎不理你,友情链接找不到,访客不上门。这是磨练。
13.奥卡姆剃刀定律
如无必要,勿增实体。
把网站做得简单,再简单,简单到非常实用,而不是花俏。
14.巴莱多定律(Paredo 也叫二八定律)
你所完成的工作里80%的成果,来自于你20%的付出;而80%的付出,只换来20%的成果。
随时衡量你所做的工作,哪些是最有效果的。
以上的定律深入浅出,也具指导性,但是并不需要思维定势,有时创新和出人意表的想法也是成功的关键。下面也是一些有意思的经验性总结:
1.马蝇效应
林肯少年时和他的兄弟在肯塔基老家的一个农场里犁玉米地,林肯吆马,他兄弟扶犁,而那匹马很懒,慢慢腾腾,走走停停。可是有一段时间马走得飞快。 林肯感到奇怪,到了地头,他发现有一只很大的马蝇叮在马身上,他就把马蝇打落了。看到马蝇被打落了,他兄弟就抱怨说:”哎呀,你为什么要打掉它,正是那家伙使马跑起来的嘛!” 在你心满意足的时候,去寻找你的马蝇。马蝇不可怕,怕的是会一口吃掉你的东西。
2.最高气温效应
每天最热总是下午2 时左右,我们总认为这个时候太阳最厉害,其实这时的太阳早已偏西,不再是供给最大热量的时候了。此时气温之所以最高,不过是源于此前的热量积累。
你今天的网站流量,是你一个星期或更长时间前所做的事带来的。
3.超限效应(溢出效应)
刺激过多、过强和作用时间过久而引起心理极不耐烦或反抗的心理现象,称之为“超限效应”。 别到别人论坛里发太多广告。别在自己网站上放太多广告。别在自己的论坛里太多地太明显地诱导话题。
4.懒蚂蚁效应
生物学家研究发现,成群的蚂蚁中,大部分蚂蚁很勤劳,寻找、搬运食物争先恐后,少数蚂蚁却东张西望不干活。当食物来源断绝或蚁窝被破坏时,那些勤快的蚂蚁一筹莫展。“懒蚂蚁”则“挺身而出”,带领众伙伴向它早已侦察到的新的食物源转移。 不要把注意力仅仅放在一个网站上,即使这个网站现在为你带来一切。你要给自己一些时间寻找新的可行的方向,以备万一。
5.长尾理论
ChrisAnderson认为,只要存储和流通的渠道足够大,需求不旺或销量不佳的产品共同占据的市场份额就可以和那些数量不多的热卖品所
面向搜索引擎的内容管理系统(CMS)设计
网站内容静态发布的重要性:Cacheable / Search Engine Friendly
由于一个动态页面的速度往往会比静态页面慢2-10倍,因此对于一个访问量逐步向百万级发展的网站来说,访问速度很快成为一个瓶颈。除了优化内容发布系统的应用本身外,如果能把更新频率比较低的动态页面转存成静态网页来发布,速度上的提升效果将是显著的,而静态网页如果能被缓存在内存里,访问速度更会比原有动态网页有2-3个数量级的提高。
在国外内容管理系统(CMS)已经是一个非常成熟的行业,能够真正支撑大访问的系统中静态页面输出和缓存系统几乎是必须的。
此外随着互联网上的内容以惊人速度的增长也越来越突出了搜索引擎的重要性,如果网站想更好地被搜索引擎收录,网站设计除了面向用户友好(User Friendly)外,面向搜索引擎友好的设计也是非常重要的。链接地址相对固定的静态网页比较适合搜索引擎索引,动态网页后面跟的参数灵活度很大,因此很多搜索引擎都往往会忽略动态页面,比如:对于news.php?day=22&month=03&year=2003,很多搜索引擎可能只索引news.php这个页面一次,更多其他参数的页面可能都会当成相似内容滤掉;我个人一直怀疑在搜索引擎中:即使是同样内容,静态页面往往也比动态网页的PageRank高。
因此,将动态页面转换成静态页面,无论从效率上还是面向搜索引擎友好上,都是一个门户级内容发布系统必须面对的问题。
静态缓存和动态缓存的比较
静态页面的缓存可能有2种形式:
- 静态缓存:是在新内容发布的同时就立刻生成相应内容的静态页面,比如:2003年3月22日,管理员通过后台内容管理界面录入一篇新闻后,就立刻生成http://www.chedong.com/tech/2003/03/22/001.html这个静态页面,并同步更新http://www.chedong.com/tech/index.html这个静态页面上的相关链接。
- 动态缓存:是在新内容发布以后,并不预先生成相应的静态页面,直到对相应内容发出请求时,如果前台缓存服务器找不到相应缓存,就向后台内容管理服务器发出请求,后台系统会生成相应内容的静态页面,用户第一次访问页面时可能会慢一点,但是以后就是直接访问缓存了。
如果去ZDNet等国外网站会发现他们使用的基于Vignette内容管理系统都有这样的页面名称:0,22342566,300458.html。其实这里的0,22342566,300458就是用逗号分割开的多个参数:
第一次访问找不到页面后,相当于会在服务器端产生一个doc_type=0&doc_id=22342566&doc_template=300458的查询,
而查询结果会生成的缓存的静态页面:0,22342566,300458.html
静态缓存的缺点:
- 复杂的触发更新机制:这两种机制在内容管理系统比较简单的时候都是非常适用的。但对于一个关系比较复杂的网站来说,页面之间的逻辑引用关系就成为一个非常非常复杂的问题。最典型的例子就是一条新闻要同时出现在新闻首页和相关的3个新闻专题中,在静态缓存模式中,每发一篇新文章,除了这篇新闻内容本身的页面外,还需要系统通过触发器生成多个新的相关静态页面,这些相关逻辑的触发也往往就会成为内容管理系统中最复杂的部分之一。
- 旧内容的批量更新: 通过静态缓存发布的内容,对于以前生成的静态页面的内容很难修改,这样用户访问旧页面时,新的模板根本无法生效。
在动态缓存模式中,内容管理系统只需要关心各个页面自身,而相关的其他页面链接能自动更新,从而大大减少了设计触发器设计的需要。
VIGNETTE的动态缓存虽然很好,但是一个系统如果设计得太全面其实也是有很大危险的:如果一个频道下文章很多:比如达到十万时,如果生成的静态页面都在一个目录下,对系统文件系统是一个极大的危害,因为一个目录下文件个数超过3000效率就会非常差,甚至连rm *时都会出现too many arguments错误。
简单的说,一个好的内容管理系统应该包括:
- 输入:方便的内容录入,所见即所得的编辑界面,权限控制等……
- 输出:方便的模板管理,缓存发布等……
设计或寻找这样一个系统如果考虑功能全面和高集成度,你会发现只有那些几十万$以上的专业内容发布系统才能你满足所有的需求。
以前做应用的时候也用过一些方式:应用首次访问以后将生成的内容存成一个缓存文件,下次请求时从缓存目录中读取缓存文件,内容更新时,应用把内容从缓存目录中删掉,从而减少对数据库的访问。虽然这样做也能承载比较大的负载,但这样的内容管理和缓存一体的系统是很难分离的。
如果换一个思路:通过一定的分工现内容管理和缓存机制2者的分离,你会发现无论哪一方面可选的余地都是非常大的。甚至有可能利用目前的已经是“功能”比较全面的内容管理系统,而让所有“效率”问题都由前台更专业,而且是很容易分布的缓存服务器解决:可以是通过开放源代码的SQUID做反相代理的WEB加速,可以是专门的缓存硬件设备,甚至是专业的缓存服务商。
动态缓存必须有一个基于静态链接本身的参数解析过程,很多专业内容管理系统系统都是将参数解析机制做成了WEB服务器的模块实现的。
我们可以把以前的HTTP/GET方式的?key=value改为直接用/value1/value2的方式来传递,从而实现了动态页面的静态URL形式。而缓存只需要在前端加上一层CACHE服务器,比如:Squid。网站动态内容的动态缓存发布就可以实现了。
按照这个机制实现的发布系统很好地体现了应用系统的分工:把复杂地内容管理系统分解成:内容输入和缓存这2个相对简单的系统实现。而中间的内容发布通过URL REWRITE或PATH_INFO解决动态页面的参数传递:
- 后台:内容管理系统,专心的将内容发布做好,比如:复杂的工作流管理,复杂的模板规则等……
- 前台:页面的缓存管理则可以使用缓存软件(比如前台80端口使用SQUID对后台8080的内容发布管理系统进行缓存),缓存硬件,甚至交给缓存服务商。
______________________ ___________________|Squid Software cache| |F5 Hardware cache|---------------------- ------------------- \ / \ ________________ / |ASP |JSP |PHP | PATH_INFO Based Content Manage System ----------------
把URI地址用作参数传递:URL REWRITE和PATH_INFO
最近看到很多关于面向搜索引擎URL设计优化(URI Pretty)的文章,提到了很多利用一定机制将动态网页参数变成像静态网页的形式:
比如可以将:http://www.chedong.com/phpMan.php?mode=man¶meter=ls
变成:http://www.chedong.com/phpMan.php/man/ls
最简单的是基于各种WEB服务器中的URL重写转向(Rewrite)模块的URL转换:这样几乎可以不修改程序的实现将news.asp?id=234的映射成news/234.html
Apache上有一个模块(非缺省):mod_rewrite:当然URL REWRITE的强大功能还远远不止于此。
当我需要将将news.asp?id=234的映射成news/234.html时:只需设置:
RewriteRule /news/(\d+)\.html /news\.asp\?id=$1 [N,I]
这样就把 /news/234.html 映射成了 /news.asp?id=234
当有对/news/234.html的请求时:web服务器会把实际请求转发给/news.asp?id=234
而在IIS也有相应的REWRITE模块:比如ISAPI REWRITE和IIS REWRITE,语法都是基于正则表达式,因此语法是几乎相同的:
比对于某一个简单应用可以是:
RewriteRule /news/(\d+)? /news\.asp\?id=$1 [N,I]
这样就把 /news/234 映射到了 /news.asp?id=234
如我需要把 http://www.myhost.com/foo.php?a=A&b=B&c=C 表现成 http://www.myhost.com/foo.php/a/A/b/B/c/C。而一个更通用的能够将所有的动态页面进行参数映射的表达式是:
RewriteRule (.*?\.php)(\?[^/]*)?/([^/]*)/([^/]*)(.+?)? $1(?2$2&:\?)$3=$4?5$5: [N,I]
通过URL REWRITE还有一个好处就是隐藏后台实现:
比如我们需要将应用从news.asp?id=234迁移成news.php?query=234时,前台的表现可以一直保持为news/234.html。从实现应用和前台表现的分离:保持了URL的稳定性,在实现后台应用平台的迁移时非常有用。使用mod_rewrite甚至可以把请求转发到其他后台服务器上:
另外一个方式就是基于PATH_INFO:
PATH_INFO是一个CGI 1.1的标准,所有直接跟在CGI或动态页面app.cgi后面的"/value_1/value_2"就是PATH_INFO参数:
比如http://www.chedong.com/phpMan.php/man/ls,中:$PATH_INFO = "/man/ls"
PATH_INFO是CGI标准,因此PHP Servlet等都有比较好的支持。比如Servlet中就有request.getPathInfo()方法。
注意:/myapp/servlet/Hello/foo的getPathInfo()返回的是/foo,而/myapp/dir/hello.jsp/foo的getPathInfo()将返回的/hello.jsp,从这里你也可以知道jsp其实就是一个Servlet的PATH_INFO参数。ASP不支持PATH_INFO,
PHP中基于PATH_INFO的参数解析的例子如下:
//注意:第一个参数是空的,参数按"/"分割
if ( isset($_SERVER["PATH_INFO"]) ) {
list($nothing, $day, $id) = explode(‘/’, $_SERVER["PATH_INFO"]);
}
如何隐蔽应用:例如.php,的扩展名:
在APACHE中这样配置:
<FilesMatch "^app_name$">
ForceType application/x-httpd-php
</FilesMatch>
如何更像静态页面:app_name/my/app.html
解析的PATH_INFO参数的时候,把最后一个参数的最后5个字符“.html”截断即可。
注意:APACHE2中缺省是不允许PATH_INFO的,需要设置
AcceptPathInfo on
特别是针对使用虚拟主机用户,无权安装和配置mod_rewrite的时候,PATH_INFO往往就成了唯一的选择。
虽然通过修改设置SQUID也可以对带?的动态页面进行缓存,但为了方便搜索引擎收录索引,还是将参数改成PATH_INFO比较好。
OK,这样以后看见类似于http://www.example.com/article/234这样的网页你就知道其实是article/show.php?id=234这个php程序生成的动态网页,很多站点表面看上去可能有很多静态目录,其实很有可能都是使用1,2个程序实现的内容发布。比如很多WIKIWIKI系统都使用了这个机制:整个系统就一个简单的wiki程序,而看上去的目录其实都是这个应用拿后面的地址作为参数的查询结果。
利用基于MOD_REWRITE/PATH_INFO + CACHE服务器的解决方案对原有的动态发布系统进行改造,也可以大大降低旧有系统升级到新的内容管理系统的成本。
面向缓存的页面设计
让页面能够比较好的被缓存服务器缓存,必须在产生内容的WEB服务器上设置,让返回内容的HTTP HEADER中加入"Last-Modified"和"Expires"声明,比如:
Last-Modified: Wed, 14 May 2003 13:06:17 GMT
Expires: Fri, 13 Jun 2003 13:06:17 GMT
以允许前端SQUID服务器缓存:
- 页面必须包含Last-Modified: 标记,一般纯静态页面本身都会有Last-Modified信息,动态页面需要通过函数强制加上,比如PHP中:
// always modified now
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); - 必须有Expires或Cache-Control: max-age标记设置页面的过期时间:
对于静态页面,通过apache的mod_expires根据页面的MIME类型设置缓存周期:比如图片缺省是1个月,HTML页面缺省是2天等。
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/gif "access plus 1 month"
ExpiresByType text/css "now plus 2 day"
ExpiresDefault "now plus 1 day"
</IfModule>对于动态页面,则可以直接通过写入HTTP返回的头信息,比如对于新闻首页index.php可以是20分钟,而对于具体的一条新闻页面可能是1天后过期。比如:在php中加入了1个月后过期:
// Expires one month later
header("Expires: " .gmdate ("D, d M Y H:i:s", time() + 3600 * 24 * 30). " GMT"); - 如果服务器端有基于HTTP的认证,必须有Cache-Control: public标记
ASP应用的缓存设计:
首先在公用的包含文件中(比如include.asp)加入以下公用函数:
<%
‘ Converts date (19991022 11:08:38) to http form (Fri, 22 Oct 1999 12:08:38 GMT)
Function DateToHTTPDate(ByVal OleDATE)
Const GMTdiff = #08:00:00#
OleDATE = OleDATE – GMTdiff
DateToHTTPDate = engWeekDayName(OleDATE) & _
", " & Right("0" & Day(OleDATE),2) & " " & engMonthName(OleDATE) & _
" " & Year(OleDATE) & " " & Right("0" & Hour(OleDATE),2) & _
":" & Right("0" & Minute(OleDATE),2) & ":" & Right("0" & Second(OleDATE),2) & " GMT"
End Function
Function engWeekDayName(dt)
Dim Out
Select Case WeekDay(dt,1)
Case 1:Out="Sun"
Case 2:Out="Mon"
Case 3:Out="Tue"
Case 4:Out="Wed"
Case 5:Out="Thu"
Case 6:Out="Fri"
Case 7:Out="Sat"
End Select
engWeekDayName = Out
End Function
Function engMonthName(dt)
Dim Out
Select Case Month(dt)
Case 1:Out="Jan"
Case 2:Out="Feb"
Case 3:Out="Mar"
Case 4:Out="Apr"
Case 5:Out="May"
Case 6:Out="Jun"
Case 7:Out="Jul"
Case 8:Out="Aug"
Case 9:Out="Sep"
Case 10:Out="Oct"
Case 11:Out="Nov"
Case 12:Out="Dec"
End Select
engMonthName = Out
End Function
%>
然后在具体的页面中,比如index.asp和news.asp的“最上面”加入以下代码:HTTP Header
<!–#include file="../include.asp"–>
<%
‘ set Page Last-Modified Header:
‘ Converts date (19991022 11:08:38) to http form (Fri, 22 Oct 1999 12:08:38 GMT)
Response.AddHeader "Last-Modified", DateToHTTPDate(Now())
‘ The Page Expires in Minutes
Response.Expires = 60
‘ Set cache control to externel applications
Response.CacheControl = "public"
%>
其中Response.Expires 是设置页面过期时间的:单位是分钟
如何检查目前站点页面的可缓存性(Cacheablility)呢?可以参考以下2个站点上的工具:
http://www.ircache.net/cgi-bin/cacheability.py
面向缓存的站点规划
一个利用SQUID的Transparent对多个站点进行做WEB加速http acceleration方案:
原先一个站点的规划可能是这样的:
200.200.200.207 www.chedong.com
200.200.200.208 news.chedong.com
200.200.200.209 bbs.chedong.com
200.200.200.205 images.chedong.com
在SQUID模式下:所有站点都通过外部DNS指向到同一个IP:200.200.200.200/201这2台SQUID缓存服务器上(使用2台是为了冗余备份)
_____________________ ________www.chedong.com 请求 \ | Squid cache box | | | / 192.168.0.4 www.chedong.com news.chedong.com 请求 -| 200.200.200.200/201 |-|firewall| - 192.168.0.4 news.chedong.com bbs.chedong.com 请求 / | /etc/hosts | | box | \ 192.168.0.3 bbs.chedong.com --------------------- --------
编译和配置过程:
- ./configure –enable-referer-log –disable-internal-dns
–disable-internal-dns:禁用SQUID的DNS解析
–enable-referer-log:便于APACHE COMBINED格式日志生成 - 配置:
http_port 80
httpd_accel_host virtual
httpd_accel_port 8000
httpd_accel_uses_host_header on# accelerater my domain only
acl acceleratedHosts dstdom_regex chedong.com
# accelerater http protocol on port 80
acl acceleratedProtocol protocol HTTP
acl acceleratedPort port 80
# access arc
acl all src 0.0.0.0/0.0.0.0# Allow requests when they are to the accelerated machine AND to the
# right port with right protocol
http_access allow acceleratedProtocol acceleratedPort acceleratedHosts
http_access allow all
在/etc/hosts中:加入内部的DNS解析,比如:
192.168.0.4 www.chedong.com
192.168.0.4 news.chedong.com
192.168.0.3 bbs.chedong.com
工作原理:
SQUID服务器上关闭了DNS解析,这样,请求外部过来时,设置SQUID根据/etc/hosts文件进行内部DNS解析。这样,服务器请求就可以转发到我们指定的内部地址上。
使用SQUID的反相代理加速,我们不仅可以得到性能上的提升,而且还能获得额外的安全性和配置的灵活度:
- 配置灵活性提高:可以自己在内部服务器上控制后台服务器的DNS解析,当需要在服务器之间做迁移调整时,就不用大量修改外部DNS配置了,只需要修改内部DNS实现服务的调整。
- 数据安全性增加:所有后台服务器可以很方便的被保护在防火墙内。
- 后台应用设计复杂程度降低:原先为了效率常常需要建立专门的图片服务器images.chedong.com和负载比较高的应用服务器bbs.chedong.com分离,在SQUID加速模式中,所有前台请求都通过SQUID服务器:实际上就都是静态页面,这样,应用设计时就不用考虑图片和应用本身分离了,也大大降低了后台内容发布系统设计的复杂程度,由于数据和应用都存放在一起,也方便了文件系统的维护和管理。
小节:
- 大访问量的网站应尽可能将动态网页生成静态页面作为缓存发布,甚至对于搜索引擎这样的动态应用来说,缓存机制也是非常非常重要的。
- 利用PATH_INFO机制进行解析参数,实现动态网页链接的美化,方便搜索引擎的索引;
- 在动态页面中利用HTTP Header定义缓存更新策略。
- 利用缓存服务器获得额外的配置和安全性
- 日志非常重要:SQUID日志缺省不支持COMBINED日志,但REFERER日志对于站点分析非常重要,在GNU/Linux可以用以下方式生成:
pr -mJt access.log referer.log | awk ‘{print $1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "$10" \x22"$14"\x22 \x22"$11"\x22"}’ > combined.log
-m merge
-J join line
-t omit header and footer
附1:SQUID性能测试试验
phpMan.php是一个基于php的man page server,每个man page需要调用后台的man命令和很多页面格式化工具,系统负载比较高,提供了Cache Friendly的URL,以下是针对同样的页面的性能测试资料:
测试环境:Redhat 8 on Cyrix 266 / 192M Mem
测试程序:使用apache的ab(apache benchmark):
测试条件:请求50次,并发50个连接
测试项目:直接通过apache 1.3 (80端口) vs squid 2.5(8000端口:加速80端口)
测试1:无CACHE的80端口动态输出:
ab -n 100 -c 10 http://www.chedong.com:81/phpMan.php/man/kill/1
This is ApacheBench, Version 1.3d <$Revision: 1.58 $> apache-1.3
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2001 The Apache Group, http://www.apache.org/
Benchmarking localhost (be patient)…..done
Server Software: Apache/1.3.23
Server Hostname: localhost
Server Port: 80
Document Path: /phpMan.php/man/kill/1
Document Length: 4655 bytes
Concurrency Level: 5
Time taken for tests: 63.164 seconds
Complete requests: 50
Failed requests: 0
Broken pipe errors: 0
Total transferred: 245900 bytes
HTML transferred: 232750 bytes
Requests per second: 0.79 [#/sec] (mean)
Time per request: 6316.40 [ms] (mean)
Time per request: 1263.28 [ms] (mean, across all concurrent requests)
Transfer rate: 3.89 [Kbytes/sec] received
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 29 106.1 0 553
Processing: 2942 6016 1845.4 6227 10796
Waiting: 2941 5999 1850.7 6226 10795
Total: 2942 6045 1825.9 6227 10796
Percentage of the requests served within a certain time (ms)
50% 6227
66% 7069
75% 7190
80% 7474
90% 8195
95% 8898
98% 9721
99% 10796
100% 10796 (last request)
测试2:SQUID缓存输出
/home/apache/bin/ab -n50 -c5 "http://localhost:8000/phpMan.php/man/kill/1"
This is ApacheBench, Version 1.3d <$Revision: 1.58 $> apache-1.3
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2001 The Apache Group, http://www.apache.org/
Benchmarking localhost (be patient)…..done
Server Software: Apache/1.3.23
Server Hostname: localhost
Server Port: 8000
Document Path: /phpMan.php/man/kill/1
Document Length: 4655 bytes
Concurrency Level: 5
Time taken for tests: 4.265 seconds
Complete requests: 50
Failed requests: 0
Broken pipe errors: 0
Total transferred: 248043 bytes
HTML transferred: 232750 bytes
Requests per second: 11.72 [#/sec] (mean)
Time per request: 426.50 [ms] (mean)
Time per request: 85.30 [ms] (mean, across all concurrent requests)
Transfer rate: 58.16 [Kbytes/sec] received
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 9.5 0 68
Processing: 7 83 537.4 7 3808
Waiting: 5 81 529.1 6 3748
Total: 7 84 547.0 7 3876
Percentage of the requests served within a certain time (ms)
50% 7
66% 7
75% 7
80% 7
90% 7
95% 7
98% 8
99% 3876
100% 3876 (last request)
结论:No Cache / Cache = 6045 / 84 = 70
结论:对于可能被缓存请求的页面,服务器速度可以有2个数量级的提高,因为SQUID是把缓存页面放在内存里的(因此几乎没有硬盘I/O操作)。
附2:一个CACHE多主机APACHE服务的SQUID安装配置:
squid的编译:
./configure –enable-useragent-log –enable-referer-log –enable-default-err-language=Simplify_Chinese –enable-err-languages="Simplify_Chinese English" –disable-internal-dns
make
#make install
#cd /usr/local/squid
make dir cache
chown squid.squid *
vi /usr/local/squid/etc/squid.conf
———————cut here———————————-
# visible name
visible_hostname cache.example.com
# cache config: space use 1G and memory use 256M
cache_dir ufs /usr/local/squid/cache 1024 16 256
cache_mem 256 MB
cache_effective_user squid
cache_effective_group squid
http_port 80
httpd_accel_host virtual
httpd_accel_single_host off
httpd_accel_port 80
httpd_accel_uses_host_header on
httpd_accel_with_proxy on
# accelerater my domain only
acl acceleratedHostA dstdomain .example1.com
acl acceleratedHostB dstdomain .example2.com
acl acceleratedHostC dstdomain .example3.com
# accelerater http protocol on port 80
acl acceleratedProtocol protocol HTTP
acl acceleratedPort port 80
# access arc
acl all src 0.0.0.0/0.0.0.0
# Allow requests when they are to the accelerated machine AND to the
# right port with right protocol
http_access allow acceleratedProtocol acceleratedPort acceleratedHostA
http_access allow acceleratedProtocol acceleratedPort acceleratedHostB
http_access allow acceleratedProtocol acceleratedPort acceleratedHostC
# logging
emulate_httpd_log on
referer_log /usr/local/squid/var/logs/referer.log
useragent_log /usr/local/squid/var/logs/agent.log
———————-cut here———————————
创建缓存目录:
/usr/local/squid/sbin/squid -z
启动squid
/usr/local/squid/sbin/squid
停止squid:
/usr/local/squid/sbin/squid -k shutdown
启用新配置:
/usr/local/squid/sbin/squid -k reconfig
通过crontab每天0点截断/轮循日志:
0 0 * * * (/usr/local/squid/sbin/squid -k rotate)
附3:如何在IIS上利用PHP支持PATH_INFO
PHP的ISAPI模式安装备忘:只试成 php-4.2.3-Win32
解包目录
========
php-4.2.3-Win32.zip c:\php
PHP.INI初始化文件
=================
复制:c:\php\php.ini-dist 到 c:\winnt\php.ini
配置文件关联
============
按照install.txt中的说明配置文件关联
运行库文件
==========
复制 c:\php\php4ts.dll 到 c:\winnt\system32\php4ts.dll
这样运行后:会发现php把PATH_INFO映射到了物理路径上
Warning: Unknown(C:\CheDong\Downloads\ariadne\www\test.php\path): failed to create stream: No such file or directory in Unknown on line 0
Warning: Unknown(): Failed opening ‘C:\CheDong\Downloads\ariadne\www\test.php\path’ for inclusion (include_path=’.;c:\php4\pear’) in Unknown on line 0
安装ariadne的PATCH
==================
停止IIS服务
net stop iisadmin
ftp://ftp.muze.nl/pub/ariadne/win/iis/php-4.2.3/php4isapi.dll
覆盖原有的c:\php\sapi\php4isapi.dll
注:ariadne是一个基于PATH_INFO的内容发布系统
PHP 4.3.2 RC2中CGI模式的PATH_INFO已经修正,照常安装即可。
参考资料:
CMS行业观察
http://www.cmswatch.com
CMS讨论邮件列表
http://www.cms-list.org
一个基于PATH_INFO的开源内容管理系统
http://typo3.com/
商业的和开源CMS项目列表:
http://directory.google.com/Top/Computers/Software/Internet/Site_Management/Content_Management/
搜索引擎友好的URL设计
http://www.sitepoint.com/article/485
说不定这个URL原来就是articel.php?id=485
HTTP代理缓存
http://vancouver-webpages.com/proxy.html
可缓存的页面设计
http://linux.oreillynet.com/pub/a/linux/2002/02/28/cachefriendly.html
相关RFC文档:
- RFC 2616:
- section 13 (Caching)
- section 14.9 (Cache-Control header)
- section 14.21 (Expires header)
- section 14.32 (Pragma: no-cache) is important if you are interacting with HTTP/1.0 caches
- section 14.29 (Last-Modified) is the most common validation method
- section 3.11 (Entity Tags) covers the extra validation method
可缓存性检查:
http://www.web-caching.com/cacheability.html
URL Rewrite文档:
http://www.isapirewrite.com/docs/
http://httpd.apache.org/docs/mod/mod_rewrite.html
http://httpd.apache.org/docs-2.0/mod/mod_rewrite.html