在半年的PJBlog使用中,我发现部分页面的标题都是一样的,不符合页面内容。且基本上所有页面的关键字(Keywork)和描述(Description)都是一样的,对搜索引擎(特别是Google)的收录排名不利。
在接下的时间里,我会抽空对程序进行修改,改正上述问题,使其符合SEO的要求。
分类:网站技术
微软建议的ASP性能优化28条守则
摘要:本文介绍优化 ASP 应用程序和 VBScript 的技巧。
目录
技巧 1:将经常使用的数据缓存在 Web 服务器上
技巧 2:将经常使用的数据缓存在 Application 或 Session 对象中
技巧 3:将数据和 HTML 缓存在 Web 服务器的磁盘上
技巧 4:避免将非敏捷的组件缓存在 Application 或 Session 对象中
技巧 5:不要将数据库连接缓存在 Application 或 Session 对象中
技巧 6:合理地使用 Session 对象
技巧 7:将代码封装在 COM 对象中
技巧 8:迟一点获得资源,早一点释放资源
技巧 9:进程外执行过程以性能换取可靠性
技巧 10:使用显式选项
技巧 11:在子例程和函数中使用局部变量
技巧 12:将经常使用的数据复制到脚本变量中
技巧 13:避免重新确定数组的维数
技巧 14:使用响应缓冲
技巧 15:批处理内嵌脚本和 Response.Write 语句
技巧 16:如果页面需要很长时间才能完成,那么执行前使用 Response.IsClientConnected
技巧 17:使用
欺骗IE,不出现Flash激活框
欺骗IE不出现Flash激活框的方法很简单 只要在页面上面引入一个js文件,然后用js来控制flash的html代码输出即可。但是如果我们的脚本是动态加载的就会有两种情况,看以下代码
[code]var s = document.createElement(“script”);
s.src = src;
document.getElementsByTagName(“head”)[0].appendChild(s);[/code]
[code]var s = document.createElement(“script”);
document.getElementsByTagName(“head”)[0].appendChild(s);
s.src = src;[/code]
一眼看下去这两断代码执行结果上面差不多。但是有一段代码无法欺骗IE,引入的js输出flash会出现激活框。
这两断唯一区别就是 先给 script 对象的src赋值 再 append到head。还是先append再赋值。我做了实验,只有先给 script 的src 赋值再 append 到页面上面就可以欺骗IE了。
PHP学习书籍介绍
今天看到别人介绍推荐的两本不错的PHP学习书籍:
PHP与MySQL 5程序设计(第二版)
译者: 朱涛江
作者: (美)吉尔摩
ISBN: 9787115155092 [十位: 7115155097]
页数: 634
定价: 79.0
出版社: 人民邮电出版社
出版年: 2007-2-1
被奉为“新圣经”,本书全面介绍PHP脚本语言和MySOL数据库这两种目前最流行的开源软件,主要内容包括PHP和MySQL基本概念、PHP扩展与应用库、日期和时间功能、PHP数据对象扩展、PHP的mysqli扩展、MySQL 5的存储例程、解发器和视图等。本书实用性强,帮助读者学习PHP编程语言和MySQL数据库服务器的最佳实践,了解如何结合这些卓越的技术创建数据库驱动的动态Web应用程序。
本书适合于Web开发的新手阅读,也适合作为各层次PHP和MySQL开发人员的参考书。
作者简介 ······
W.Jason Gilmore,世界知名的PHP开发人员,曾开发了大量PHP和MySQL应用程序,并在各大专业媒体发表了众多脍炙人口的文章。目前,Jason在开发之余,还负责着Apress出版公司的开源图书出版项目。可以通wj@wjgilmore.com与他联系。他的个人网站是http://www.wjgilmore.com。
PHP和MySQL Web开发(原书第3版)
又名: PHP and MySQL Web Development, Third Editio
译者: 武欣 / 邵煜
作者: Luke Welling / Laura Thomson
ISBN: 9787111154709 [十位: 7111154703]
页数: 666
定价: 78
出版社: 机械工业出版社
出版年: 2005-6-1
本书将PHP开发与MySQL应用相结合,分别对PHP和MySQL做了深入浅出的分析,不仅介绍PHP和MySQL的一般概念,而且对PHP和MySQL的Web应用做了较全面的阐述,并包括几个经典且实用的例子。
作者简介
Laura Thomson是澳大利亚墨尔本RMIT大学计算机科学信息技术学院的讲师。她也是Tangled Web Design公司的合伙人。Laura曾经在Telstra和波士顿顾问集团工作过。她获得了应用科学(计算机科学)的学士学位和工程学(计算机系统工程)学士学位,目前她正在攻读适应性Web站点的博士学位。
Service Unavailable案例之一解决方法
今天在测试一个托管机房的网速,服务商给了个服务器给我,让我测试。我远程登录上去新建了一个站点,结果一浏览就出现Service Unavailable。
以前还没有遇到一建立站点就有这问题的,搞不定,于是我习惯性地去网络上搜索,有说是权限问题的,我把权限给了最大,还是解决不了。
无意中看到一文章中提到系统日志,我想,能不能在日志里找到些蛛丝马迹呢?打开事件查看器,一看应用程序日志,里面一串的错误信息,打开其中一个,发现内容分别有:[quote]HTTP 筛选器 DLL C:
ewriteRewrite.dll 加载失败。数据是错误。
有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。[/quote]
和[quote]无法加载站点/服务的所有 ISAPI 筛选器。因此启动中止。
有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。[/quote]
这下明白了,原来是ISAPI筛选器在作怪。
看Rewrite的名称,应该是URL Rewrite类的东东,找了一下没找到错误信息里提到的文件和文件夹,看来是原来的管理员直接就把这玩意给删删了。
接下来只好在IIS管理器里操作了。打开网站属性页,在ISAPI 筛选器这一项里找到了出错的筛选器,删除,然后重新启动一下IIS。再一看网站,可以运行了。
从这个案例的处理过程中,我觉得在日志里可以找到一些问题相关信息,使得问题的解决变得简单快速。做为一个管理员,要有看日志的意识。
PjBlog一个Bug的修正
今天在PJBlog的论坛上,发现有人求助帮忙更正一个Bug。
Bug的表现就是他发表的日志中插入了可执行HTML:
[quote][html]
[/html][/quote]发表正常,但点击修改时,从内容摘要这开始,页面内容不显示了。
我按他给的HTML内容,试了一下,确实如此。我查看了一下网页源文件,发现原来是内容摘要里有注释符号,但没有闭合,所以下面的都被注释了,导致无法显示。
问题的原因找到了,下面是解决办法。
一是发表文章时注意编辑内容摘要,使注释标签闭合。这个治标不治本,感觉不现实。
二是修改程序,这些摘要内容是处于一个
ICP备案如何跳过手机验证码
在ICP备案时经常会有朋友抱怨手机上收不到短信
收不到短信或没有手机的朋友可以用下面的方法进行备案
1:登陆:http://www.miibeian.gov.cn
2:注册(注册完了手机上收不到短信,没有验证码)
3:退回主页http://www.miibeian.gov.cn
4:输入用户名、密码、验证码后点击登陆
5:此时需输入“手机验证码”和“邮箱验证码”—-不要输入
6:在地址栏里输入http://www.miibeian.gov.cn/index_icp.jsp
7:回车
8:进行备案
目前此方法还没发现有何不良后遗症.
[color=Blue]2008年最新修正:[/color]
现在备案注册,直接就有两个验证码发到邮箱里。而且,两验证码都是相同的。
PJBlog 防垃圾留言
我用的是PJ2.6里自带的留言插件,经常发现有好多垃圾留言(我想各位也会碰到)。
我分析了一下,发现在我申请的51.la统计里没有写留言访问者的相关记录,但在IIS日志里是有记录的。
看来这些留言都是通过工具来发的。
51.la统计,是用js文件来调用的,既然没有记录,那肯定是js没有执行。
于是我想到用js来做一个防垃圾留言功能。改过后并不影响正常留言,从表面看不出区别。
具体方法如下:
1、打开PluginsGuestBook文件夹,
2、打开guestbook.asp,在留言表单里加上:
[code][/code]
3、打开bookaction.asp,在
[code]post_Message=CheckStr(request.form(“Message”))
FlowControl=false[/code]后面加上:
[code]Dim validatevalue
validatevalue=trim(request.form(“validatevalue”))
If validatevalue<>“browser” Then
showmsg “留言发表错误信息”,”请使用浏览器来发表留言。
“,”ErrorIcon”,”plugins”
exit function
end if[/code]
自从改过后,再也没有垃圾留言出现了,虽然IIS日志里还是有许多发留言的动作。说明此方法有效!
对修改不熟悉的朋友,可以下载我这里修改好的文件去替换。其中留言提交处理页面我还微调了判断的顺序,减少了某些情况下的不必要的判断,对性能有少许提高。
[down=attachments/month_0708/j200782110331.rar]点击下载Guestbook.rar[/down]
[color=Blue]2007年11月4日更正:
由于有的博客改动比较大,所以留言表单可能不会是第一个表单,之前写的:document.forms[0].validatevalue.value='browser'就会有问题,现在用具体名称来代替原来的索引。[/color]
[color=Red]对了,补充一个方法:[/color]
一开始发现垃圾评论时,我查看了下IIS日志,发现好多客户端用的是Java。于是我加上了客户端过虑,也起到了一定效果。方法如下:
在conn.asp的最上面加上:
[code]Dim UserAgent
UserAgent = Trim(Lcase(Request.Servervariables(“HTTP_USER_AGENT”)))
If InStr(UserAgent,”teleport”) > 0 or InStr(UserAgent,”webzip”) > 0 or InStr(UserAgent,”flashget”)>0 or InStr(UserAgent,”offline”)>0 or Instr(UserAgent,”java”) Then
Response.Write “请不要采用teleport/Webzip/Flashget/Offline等工具来浏览博客!”
Response.End
End If[/code]
[color=Blue]2007年11月4日补充:
上面这代码是VBS,所以如果你的conn文件是JS语言的,请自行调整。[/color]
[ASP]include后乱码问题的解决
今天在改一网站,把共同的内容取出来用include来调用,以后改起来也方便。结果运行时include进来的内容中文显示成为了乱码。
上网搜索了一下,没有找到解决方法,于是自己研究。
出了乱码,肯定是编码的问题。我看了一下运行后的网页源文件,发现中文部分也是乱码,但用文本编辑器打开那个页面,一切正常的,看来不是显示的编码问题而应该是在服务器上解释时就已经成了乱码。
正一筹莫展时,突然想到在另存文件时会有一个编码选项,我猜想可能是这个的问题,于是我用UltraEdit-32打开文件,发现有好几个编码方式,逐一试了下,发现编码方式用ANSI/ASCII就不会变成乱码了。
有不当之处请各位指正。欢迎大家提出不同看法,交流心得。
深入浅出之正则表达式(二)
前言:
本文是前一片文章《深入浅出之正则表达式(一)》的续篇,在本文中讲述了正则表达式中的组与向后引用,先前向后查看,条件测试,单词边界,选择符等表达式及例子,并分析了正则引擎在执行匹配时的内部机理。
本文是Jan Goyvaerts为RegexBuddy写的教程的译文,版权归原作者所有,欢迎转载。但是为了尊重原作者和译者的劳动,请注明出处!谢谢!
9.单词边界
元字符<<>>也是一种对位置进行匹配的“锚”。这种匹配是0长度匹配。
有4种位置被认为是“单词边界”:
1)在字符串的第一个字符前的位置(如果字符串的第一个字符是一个“单词字符”)
2)在字符串的最后一个字符后的位置(如果字符串的最后一个字符是一个“单词字符”)
3)在一个“单词字符”和“非单词字符”之间,其中“非单词字符”紧跟在“单词字符”之后
4)在一个“非单词字符”和“单词字符”之间,其中“单词字符”紧跟在“非单词字符”后面
“单词字符”是可以用“w”匹配的字符,“非单词字符”是可以用“W”匹配的字符。在大多数的正则表达式实现中,“单词字符”通常包括<<[a-zA-Z0-9_]>>。
例如:<<4>>能够匹配单个的4而不是一个更大数的一部分。这个正则表达式不会匹配“44”中的4。
换种说法,几乎可以说<<>>匹配一个“字母数字序列”的开始和结束的位置。
“单词边界”的取反集为<>,他要匹配的位置是两个“单词字符”之间或者两个“非单词字符”之间的位置。
·深入正则表达式引擎内部
让我们看看把正则表达式<<is>>应用到字符串“This island is beautiful”。引擎先处理符号<<>>。因为是0长度 ,所以第一个字符T前面的位置会被考察。因为T是一个“单词字符”,而它前面的字符是一个空字符(void),所以匹配了单词边界。接着<>和第一个字符“T”匹配失败。匹配过程继续进行,直到第五个空格符,和第四个字符“s”之间又匹配了<<>>。然而空格符和<>不匹配。继续向后,到了第六个字符“i”,和第五个空格字符之间匹配了<<>>,然后<
10.选择符
正则表达式中“|”表示选择。你可以用选择符匹配多个可能的正则表达式中的一个。
如果你想搜索文字“cat”或“dog”,你可以用<
选择符在正则表达式中具有最低的优先级,也就是说,它告诉引擎要么匹配选择符左边的所有表达式,要么匹配右边的所有表达式。你也可以用圆括号来限制选择符的作用范围。如<<(cat|dog)>>,这样告诉正则引擎把(cat|dog)当成一个正则表达式单位来处理。
·注意正则引擎的“急于表功”性
正则引擎是急切的,当它找到一个有效的匹配时,它会停止搜索。因此在一定条件下,选择符两边的表达式的顺序对结果会有影响。假设你想用正则表达式搜索一个编程语言的函数列表:Get,GetValue,Set或SetValue。一个明显的解决方案是<
因为<
和我们期望的相反,正则表达式并没有匹配整个字符串。有几种可能的解决办法。一是考虑到正则引擎的“急切”性,改变选项的顺序,例如我们使用<
一个更好的方案是使用单词边界:<<(Get|GetValue|Set|SetValue)>>或<<(Get(Value)?|Set(Value)?>>。更进一步,既然所有的选择都有相同的结尾,我们可以把正则表达式优化为<<(Get|Set)(Value)?>>。
11.组与向后引用
把正则表达式的一部分放在圆括号内,你可以将它们形成组。然后你可以对整个组使用一些正则操作,例如重复操作符。
要注意的是,只有圆括号“()”才能用于形成组。“[]”用于定义字符集。“{}”用于定义重复操作。
当用“()”定义了一个正则表达式组后,正则引擎则会把被匹配的组按照顺序编号,存入缓存。当对被匹配的组进行向后引用的时候,可以用“数字”的方式进行引用。<<1>>引用第一个匹配的后向引用组,<<2>>引用第二个组,以此类推,<< >>引用第n个组。而<<