• 优化DOTTEXT之四:TRACKBACK的流程和改进设想


    这一节我们来看一下DOTTEXT的TRACKBACK流程。

    首先我们来看一下是怎么发送TRACKBACK的:入口是Dottext.Framework.EntryHandling.Process

    1. 检查文章内容中是否已经包含了远程网页的链接,只有包含才能继续
    2. 从远程链接的网页下载HTML代码,如果没得到,说明不是合法链接,要返回
    3. 在得到的HTML代码中检查是否已经包含了本文的链接,有说明已经PING过了,要返回
    4. 在得到的HTML代码中根据TRACKBACK标准取到要TRACKBACK链接(链接包含在RDF为键值的被注释的XHTML代码中),从而完成了由网页链接到TRACKBACK链接的转化
    5. 发送(PING)TRACKBACK。

    再来看一下接收TRACKBACK的流程,入口是:Dottext.Framework.Tracking.TrackBackHandler.ProcessRequest

    1. 根据PING过来的TRACKBACK链接得到本地文章的ID号,得不到则不是合法链接,要返回
    2. REQUEST方法是否是POST,不是要返回,这是TRACKBACK标准规定的。
    3. 根据ID号从库中检索数据,生成ENTRY对象
    4. 根据传过来的URL下载远程网页的HTML代码,如果没得到或得到的HTML中没有包含本地文章的链接,说明不是合法链接,要返回
    5. 从得到的HTML代码中分析出对方的页面标题,如果没有,要返回
    6. 生成一个新的ENTRY对象,并对其各个属性赋值,然后入库

    由此我们看到DOTTEXT发送TRACKBACK时效率是比较低的。原因是需要去下载远程的HTML,这将是一个非常耗时的工作,更不用说还要从很可能十分庞大的HTML代码中提取出TRACKBACK链接。

    再者就是接收TRACKBACK时,并没有建立屏蔽机制。从而无法避免垃极广告的侵袭,也就是我们所说的SPAM COMMENT。

    我想要解决这些问题,需要改变发送TRACKBACK的发送机制。

    1. 不再根据TRACKBACK标准去自动获取TRACKBACK,这样不仅效率极低,而且很多网站并不支持这个标准(比如www.blogchinese.com就直接提供引用通告,而不是隐藏在网页中,哈哈)的话,就无法TRACKBACK成功了。我们就认为用户输入的就是合法的TRACKBACK链接。直接进行发送。
    2. 为了能让用户得到合法的TRACKBACK地址,在每一篇文章内容之后,都显示此文的TRACKBACK链接。
    3. 再提供一个页面,输入网页链接,就能显示出此网页的TRACKBACK链接,以继续支持那些符合标准的网站

    在接收TRACKBACK时,我们相应做以下改动:

    1. 将对方URL拿到库里去验证,看对方是否已经PING过了,因为是在本地进行,速度会非常快。
    2. 在库中建立BLACKIP表,对来方的IP进行校验,这样就拥有了封对方IP的功能。

    以上只是我的设想,因为时间的原因,还没有动手去实现,如果大家有更好的建议,可以一起来探讨。

  • 相关阅读:
    Prism之12345
    Struts2注解学习1
    模拟Spring依赖注入
    Spring的IOC注解学习
    Hibernate注解学习1
    Redis源码分析(二十六) slowLog和hyperloglog
    做优秀产品经理所需的7种素质
    程序员学习英语
    PL/SQL Developer记住密码设置
    oracle11g,安装及net Manager的配置
  • 原文地址:https://www.cnblogs.com/jasononline/p/767225.html
Copyright © 2020-2023  润新知