• 优化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的功能。

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

  • 相关阅读:
    汉诺塔学习笔记,有不正确的地方请小伙伴们指正~·~
    梯有N阶,上楼可以一步上一阶,也可以一步上二阶。编写一个程序,计算共有多少中不同的走法?
    HTTP Status 500
    java基础知识
    JAVA多线程和并发基础面试问答
    thymeleaf中的th:remove用法
    thymeleaf:局部变量 th:with
    springboot: thymeleaf 使用详解
    eclipse修改工作目录颜色
    The user specified as a definer ('root'@'%') does not exist
  • 原文地址:https://www.cnblogs.com/jasononline/p/767225.html
Copyright © 2020-2023  润新知