网站内容如何进行索引擎优化

索引擎优化(SEO)是当前互联网研究的一个热点,基本方法是通过优化站点页面的关键内容输出、在其他优秀站点导入链接(从外部网站的页面上链回您的网站的链接)等方法,提高搜索引擎对于站点的“识别能力”和给予更高的评分。

针对搜索效果较差的情况,可采取相关的优化有:
1、站点根目录建立robots.txt,显示声明搜索路径,并提供sitemap链接,帮助搜索引擎“找门”,例如
User-agent: *
Disallow: /admin/
Allow: /blog/
Sitemap: http://www.xxx.com/sitemap.xml

2、定期生成站点地图sitemap文件,声明站点内容和更新周期,帮助搜索引擎“识路”,例如
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.xxx.com/index.jsp</loc>
<lastmod>2009-02-06T08:36:00+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>http://www.xxx.com/a.jsp</loc>
<lastmod>2009-02-06T08:36:00+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
<loc>http://www.xxx.com/singer/837/</loc>
<lastmod>2008-08-31T03:32:10+00:00</lastmod>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://www.xxx.com/bussiness/686/</loc>
<lastmod>2007-10-11T16:07:19+00:00</lastmod>
<changefreq>monthly</changefreq>
<priority>0.4</priority>
</url>
<url>
<loc>http://www.xxx.com/song/3/</loc>
<lastmod>2003-08-30T17:12:38+00:00</lastmod>
<changefreq>yearly</changefreq>
<priority>0.2</priority>
</url>
</urlset>

3、优化链接架构,便于浏览

  • 确保网页只需通过首页的几次点击就能到达;
  • 符合用户习惯的导航设置:在首页可通过你提供的导航链接找到想要的信息:用户如果是通过一个外部链接找网站的,首先到达的不一定是首页,要确保他们能够顺利的找到首页及其他相关部分的链接;
  • 为搜索引擎设置可抓取的链接:文字链接是很容易被搜索引擎发现的;
  • 使用描述性定位文字:也就是通常看到的在链接中可以点击的词语,是一个对搜索引擎和用户很有帮助的信号;
  • 导航中尽量使用文字链;
  • 使用面包屑(breadcrumb)式的导航模式,例如“首页 > 彩铃 > 免费专区“;
  • 更好的链接锚文本(anchor text):锚文本是链接上可以被点击的文字,通常被放在锚标记<a href="..."></a>中,文字要简短、清晰;

4、图片优化:

  • 图片链接增加alt属性的描述,并使用简短但是描述性很强文字;
  • 当图片作为链接使用时,一定要提供alt文本;
  • 将图片保存在一个专用的目录下;

5、更好的元描述来改善页面摘要

  • 为每个网页创建独特的标题标签,在描述中明确包含标记性事实,准确描述网页内容;
  • 创建独特、准确的页面标题:重视<title>页面标题</title>和<meta name="description" content="本页的描述">:多数搜索引擎以此作为页面搜索的主要内容信息来源,description一般会显示在搜索结果的页面描述内容中;

6、优化URL结构:搜索引擎长于抓取各类型的URL结构

  • 在URL中使用单词:URL中的单词也会被作为搜索的依据之一;
  • 使用简单的目录结构:目录结构应该能够很好地归纳网站内容,并且使用户轻松地知道处于网站的哪个位置;
  • 为同一文档提供统一的URL;
  • 动态URL重写为静态URL;

7、建立有用的404网页:用户偶尔会因点击失效的链接或输入错误的URL而访问一些在不存在的页面,使用自定义404网页能有效地帮助用户回到网站中有效页面,将大大提高用户体验;自定义404网页中可提供回到主页的链接,热门内容页面的链接和站内搜索的功能。


除开内容,其他优化方法:
1、在优秀的网站上导出外链

2、充分利用免费的网站管理员工具http://www.google.cn/webmasters/

  • 使用工具分析网站搜索情况,作出对应改进
  • 当网站在Google上产生网站链接后,使用“网站管理员工具>控制台>链接>网站链接”功能,维护网站链接;


SEO是个漫长的过程,优化的效果需要一定时间才能反映,要有耐心,而且要反复、持续的进行~~



参考资料:
1、http://www.googlechinawebmaster.com
2、《Google's Search Engine Optimization Starter Guide》
下载
3、http://www.seotest.cn
4、http://www.seo168.com
5、http://www.seowhy.com

虚拟内存不足

现在在用一台Lenovo的X200,感觉质量还是比原来IBM差些,用了一个月多点,已经莫名蓝屏2次了。

另外还有一个令我不爽的问题就是,经常会提示虚拟内存不足(我设置了4GB),也没有发现中毒,关了很多无用的服务也无效,单从任务管理器里面看,最大的程序也就只占用了几十兆,找了很多工具,例如procexp来观察也没能发现问题,只好用1-2天就重启。

有时间了又来研究,终于还是让我找到了问题,原来是指纹认证服务的问题,虽然任务管理器中看只占用了2xMB的虚拟内存,但是一旦重启这个服务,虚拟内存就会从3.xGB的占用量猛降到600MB左右。Google了一下,有人说是在XP SP3可能有这样的问题,最新的程序也一样,不管如何了,发现问题就好办,写个批处理放到XP的计划任务里面定时重启"AuthenTec Fingerprint Service"服务就暂时将就用吧,等新版本升级来解决咯。

RestartService.bat

net stop "AuthenTec Fingerprint Service"
net start "AuthenTec Fingerprint Service"

当然,如果你不使用指纹识别功能,可以把这个服务禁用掉,我还是蛮喜欢这个功能的,所以只好这样解决了。

网页导出EXCEL格式数据,长数字变为科学计数法的解决方法

通过声明header的方法,可以从页面将表格导出成为EXCEL格式,header的声明方法如下:
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachment; filename=xxx.xls");

但是如果数据中存在长数字,例如600902000005643612,导出后会自动变为科学计数法表示为6.00902E+17,数字也变为600902000005643000,后面几位全部变为0丢失,可以将有问题的字段采用以下样式表风格解决:
<style type="text/css">
<!--
xxx {
mso-number-format:"\@";
}
-->
</style>

关于DNS的NS记录

这里有篇不错的文章,虽然简短,但是说得很明白:http://oldblog.mllm.org/node/30

看看文章中对于在不同级域名DNS服务器上NS记录配置的例子,就会很清晰的了解NS记录的应该如何使用。正如CCPN给我解释的:“上一级有,自己上面也要配置,dns之间相互查询的时候要用到这个东西”

同时,还可以了解到NS记录不是独立存在的,而是要依托于对应的A记录或者CNAME记录的。在Windows的DNS管理中,如果新增了一个NS记录,会对应创建一条A记录。例如新增N记录ns1.t.net,同时会创建名称为ns1的A记录指向对应的IP,而NS记录只是指向了这个A记录。

域控制器中Server服务禁用后导致域用户无法通过远程桌面方式登录

一个域环境中,错误的使用域组策略禁用了所有服务器的Server服务,几分钟后,在域控制器和域成员上都无法使用域帐号进行远程桌面登录,表现为输入正确的帐号密码后,远程桌面停滞在桌面背景底色的界面一段时候,最后报告域控制器不存在或者无法连通,无法使用远程桌面登陆。

原因是在域环境下,域用户登录从远程桌面登录,是需要从域控制器的SYSVOL共享目录中获取一些数据,Server服务禁用导致了共享文件服务失效,于是登录就出现了问题。

首先要想办法进入域控制器桌面,根据Windows的特性,在无法连通网络的情况下,如果使用物理终端(就是走到服务器面前,接上鼠标键盘显示器,你说你有KVM!Lucky!不用去机房了)直接登录,Windows默认是可以使用缓存的之前成功登陆的N个帐号中的某个成功登陆的;这个特性可以在组策略中调整次数,默认为10个。

使用这个方法,虽然是一个比较缓慢的登录过程,但是还是成功进入了域控制器的桌面,但此时无法使用组策略工具连接域进行配置,同样提示域可能不存在。

组策略最终也是放置在SYSVOL共享目录下的,实际是文本文件可以编译,考虑到如此,可以手工修改,删除禁用Server服务的策略,路径为%systemroot%/sysvol/sysvol/域名/Policies/策略的GUID/MACHINE/Microsoft/Windows NT/SecEdit/GptTmpl.inf

策略的GUID:
默认域的策略的GUID为31B2F340-016D-11D2-945F-00C04FB984F9
默认域控制器的策略的GUID为6AC1786C-016F-11D2-945F-00C04FB984F9

这里我们由于是错误设置了域策略,所以修改GUID为31B2F340-016D-11D2-945F-00C04FB984F9目录下的GptTmpl.inf。使用记事本打开,发现有[Service General Setting]中有一行"lanmanserver",4,"",将这行删除,保存文件。

为了使修改后的组策略生效,还需要修改组策略的版本号,路径为%systemroot%/sysvol/sysvol/域名/Policies/策略的GUID/GPT.ini,将版本号数字增加100(看你喜好)。

先重启登录修改的域控制器,再重启其他域控制器,故障消失。

如何禁用/屏蔽IBM笔记本Fn+空格键的屏幕放大功能

1、搜索TpScrex.exe,一般位于C:\Program Files\Lenovo\ZOOM或者C:\Program Files\Lenovo\PkgMgr\HOTKEY_1,改名
2、任务管理器杀掉TpScrex.exe

经常调整输入法按错,导致桌面上的图标乱套,这下世界清净了。

安装最新补丁之后Cluster Service无法启动

一组双节点的Windows 2003群集,配合IBM DS4300磁盘阵列,安装了SQL Server 2000,A机安装完最新的安全补丁之后,将此节点上的SQL Server 2000服务切换到B机,重启A机之后发现Cluster Service无法启动,使用事件查看器检查系统日志,发现有以下错误记录:

Event Type: Warning
Event Source: ql2300
Event Category: None
Event ID: 118
Date: 2008-6-11
Time: 20:10:42
User: N/A
Computer: IAMS-DB2-1
Description:
The driver for device \Device\Scsi\ql23001 performed a bus reset upon request.

Event Type: Error
Event Source: ClusSvc
Event Category: Startup/Shutdown
Event ID: 1009
Date: 2008-6-11
Time: 20:11:19
User: N/A
Computer: IAMS-DB2-1
Description:
Cluster service could not join an existing server cluster and could not form a new server cluster. Cluster service has terminated.

Event Type: Error
Event Source: Service Control Manager
Event Category: None
Event ID: 7031
Date: 2008-6-11
Time: 20:11:20
User: N/A
Computer: IAMS-DB2-1
Description:
The Cluster Service service terminated unexpectedly. It has done this 3 time(s). The following corrective action will be taken in 240000 milliseconds: Restart the service.

开始怀疑是磁盘阵列状态迁移记录问题,类似的问题原来遇到过(read.php?549),本计划找机房的同事协助将两个节点和磁盘阵列都关闭,然后先开磁盘阵列,再开一个节点,正常后,最后再开另外一个节点。但这个准备作为最后一招,先看能不能远程解决。

先将节点A又重启,群集服务依然无法启动;在节点A中进入设备管理器,将RDAC Muti-Path Pseudo-Bus和两个QLogic QLA2340 PCI Fiber Channel Adapter禁用,重启节点A之后再启用这些设备,还是无效。

在正常启动的节点B上检查,突然发现在资源管理器中只看到SQL Server群集组下面的一个磁盘分区,本来是绑定了两个的。在磁盘管理中可以看到对应的几个分区,进入命令行,切换盘符到这个看不到的分区,提示驱动器没有准备好,在SQL Server企业管理器中尝试打开一些数据文件放在这个看不到分区的时候,企业管理器出现挂死状态,在群集管理器中看到SQL Server组自动脱机又重新联机,再查看之前有问题的那个分区,竟然正常了。再重启节点A,群集服务正常启动,也正常加入了群集,各个应用组切换也正常,问题消失。

最后检查之前出现问题的磁盘,发现里面有两个补丁安装文件的临时目录,考虑到补丁安装需要重启,且这些目录没有被正常清除掉,所以判断引起故障的原因是安装的补丁占用了SQL Server一个分区作为临时文件存放,安装之后某些文件挂起,需要重启之后才能被清理,但是这时又将节点A上的应用切换到了B上,导致这个磁盘未能被节点B正常获取(或者是某些资源状态),进而在节点A启动的时候,群集也在尝试抓取这个分区,导致出现“The driver for device \Device\Scsi\ql23001 performed a bus reset upon request.”错误,群集服务也就无法正常启动。

最后总结就一句话:群集上安装补丁,先将此节点上的全部应用组全部转移走后,再进行补丁安装!

PS. 如果采用之前准备的最后一招,我想应该也是可以解决这个问题的。

vbs脚本中创建“WScript.Shell”对象出现800A01B6错误

vbs脚本中创建“WScript.Shell”对象出现800A01B6错误,并提示“对象不支持此属性或方法”

出错脚本:
Dim WshShell
WshShell = CreateObject("WScript.Shell")
WshShell.Run "xxx"

修改为,问题消失:
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "xxx"

语法问题!

Juniper NetScreen 防火墙如何做内外网的端口映射

备忘,以SSG550为例,进入WEB管理界面,操作如下:

1.增加公网VIP
Network
Interfaces
ethernet0/2 211.136.199.14/28 Edit
VIP
*ADD Virtual IP Address

2.绑定内网IP、端口
*New VIP Service
选择Map to Service 如果没有需要先添加Service
填写Map to IP
选择Server Auto Detection

3.设置策略
Policies
Untrust>Trust
*New
Destination Address 选择VIP
选择Service
选择Logging


#如何添加Service
Objects
Services
Custom
*New
Service Timeout Use protocol default
选择协议类型 TCP/UDP
Source Port Low 0 High 65535
Destination Port 要映射的端口

同一个公网IP的不同端口可以映射在内网不同IP的端口

发布phpexif v0.1 - 顺带简单谈谈EXIF

什么是EXIF(网上抄来的):
Exif是英文Exchangeable Image File(可交换图像文件)的缩写,最初由日本电子工业发展协会(JEIDA --Japan Electronic Industry Development Association) 制订,目前的最新版本是2.21 版。国际标准化组织(ISO)正在制订的相机文件设计标准(DCF -- Design role for Camera File system)可能以Exif2.1为基础。

Exif 文件实际是JPEG文件的一种,遵从JPEG标准,只是在文件头信息中增加了有关拍摄信息的内容和索引图。所以你可以使用任何支持JPEG格式的图像工具软件观看或修改Exif文件,但,打开时可能看不到Exif信息,一旦修改,Exif信息可能丢失。


简单来说,EXIF 信息就是由数码相机在拍摄过程中采集一系列的信息,然后把信息放置在我们熟知的 JPEG/TIFF 文件的头部,也就是说 EXIF 信息是镶嵌在 JPEG/TIFF 图像文件格式内的一组拍摄参数,主要包括摄影时的光圈、快门、ISO、日期时间等各种与当时摄影条件相关的讯息,相机品牌型号,色彩编码,拍摄时录制的声音以及全球定位系统(GPS)等信息。简单的说,它就好像是傻瓜相机的日期打印功能一样,只不过 EXIF 信息所记录的资讯更为详尽和完备。



包含EXIF信息的JPEG文件:
所有的JPEG文件以字符串“0xFFD8”开头(SOI),并以字符串“0xFFD9”结束(EOI),一个JPEG文件的格式大致如下图一(Exif2-2.PDF 第11页):


APP1 Maker固定为0xFFE1
APP1 Length是一个2bytes的SHORT
Exif Identifier Code为6bytes,前4bytes是字符"EXIF",后2bytes是0x00

TIFF Headers的结构可以参考下表一(Exif2-2.PDF 第10页):


TIFF Header开始到最后的详细结构可以查考如下图二(Exif2-2.PDF 第9页):


如果是要获取一张照片拍摄的相关信息,一般来说我们主要是需要关注的结构有0th IFD、Exif IFD,还有一个就是MakerNote。

0th IFD一般称为“图像信息”,里其中包含了相机厂商、相机型号、拍摄时间和Exif IFD结构入口的指针(TAG为0x8769);

Exif IFD一般称为“相机拍摄记录”,其中包含了快门、光圈、测光模式、ISO等拍摄参数信息,还有就是包含了MakerNote结构的入口指针(TAG为0x927C);

MakerNote一般称为“厂商注释”,这个是个最混乱的结构,因为不同的厂商都有自己定义的结构,里面都是一些厂商定义的信息,例如Nikon在里面定义了镜头相关的信息,ISO数值;对于D70之类N家的“老”相机,ISO数值是没有按照规范记录在Exif IFD中的,并且MakerNote中的这个字段还没有遵照文件中多字节存储顺序(big-endian和little-endian)存放,很是神奇。



phpexif:
最近给公司的摄影协会搞了个Discuz!论坛,论坛最大的目的就是交流相片,于是考虑做些改动,在页面上直接显示上传照片的Exif信息。在网上找了一下,解决的方法多数都是启用PHP自带的Exif函数,然后修改include\attachment.func.php和模板templates\default\discuzcode.htm,但是试用之后我发现php的Exif函数有些问题,有些信息显示出来格式有问题,我的php版本是4.4.7,于是改用我自己原来为自己的相册写的一个函数替代。发现原来写得很粗糙,很多问题都没有考虑,兴致一来,决定重写一个。

这次的这个版本使用了面向对象的结构,相对规整,而且对一些情况考虑得也周全一些,不过只是用来获取有限的一些参数,其他的暂时忽略不计。且对于MakerNote结构,也只是针对Nikon的jpeg文件获取了ISO数值,Nikon文件的其他信息和其他品牌的MakerNote均未涉及。一些功能也不通用,放上来主要供有兴趣的人参考或者修改使用。

版本:v0.1
功能:获取指定jpeg文件的如下Exif信息,相机厂商、相机型号、快门、光圈、曝光程序、测光模式、拍摄时间、感光度、闪光灯模式、焦距、曝光补偿、白平衡模式、等价35mm焦距、感光度,并输出成固定格式的HTML字符串

下载


参考资料:
这里还有一个压缩包包含了一些我收藏的参考资料供大家使用:
1、JEIDA 制定的EXIF 2.1官方标准 (1998.6.12)
2、JEIDA 制定的EXIF 2.2 官方标准 (2002.4)
3、EXIF 文件格式说明,一个日本人写的EXIF英文参考文档,内容有点旧,不过还是比官方规范好读很多;原始下载地址已经404错误了,好在我有备份
4、Nikon Tags说明

下载


在Discuz! 6.0中增加图片显示Exif信息的方法:
大家可以参考《数码相片EXIF信息For DZ 6.0正式版》:http://www.discuz.net/viewthread.php?tid=733174

将phpexif.php上传到Discuz! 6.0的include目录,将文中include\attachment.func.php中添加的代码改为:

/*******EXIF信息**********/
if (($extension == 'jpg' || $extension == 'jpeg'))
{
require_once("./include/phpexif.php");
if (!isset($ex) || $ex == null)
{
$ex = new EXIF();
}
$ex->get_exif("./attachments/".$attach['attachment']);
$attach['exif'] = $ex->TAG->to_string();
}
/*******EXIF信息**********/



显示效果如下:



Exif查看工具推荐:
最后还是推荐查看Exif的IE插件Opanda IExif,下载地址:http://www.opanda.com/cn/iexif/download.htm,方便查看更多Exif信息。