刚刚发现 Blog 的评论功能不能用了,提交后一直显示等待。查了一下,发现是 GFW 的问题。
自 5 月 16 日,Blogger 及托管站 BlogSpot 再次被封,导致域名 blogger.com 以及 blogspot.com 全部无法访问。而我的评论系统,是靠通过 Blogger 的 Feed 地址,由 AJAX 和 Blogger 之间通讯实现读取;由 AJAX 直接向 Blogger 的评论表单处理 URL 发送 POST 请求实现提交。这两项功能都是基于 www.blogger.com 域名的。前者所用的 Feed 地址由于先前早已被封,并通过朋友在 DreamHost 的主机上放了一个 PHP 的中转程序,所以评论列表功能一直可以用,但是评论提交是直接 POST 的,www.blogger.com 被封,所以评论自然就失败了。
没办法,刚刚改进了一下我的 HTTP 中转程序,实现了 POST 的功能,现在评论功能已经修复了。只是整个数据流程要经历“本地网页 » blog.windia.net » DreamHost » www.blogger.com » DreamHost » blog.windia.net » 本地”这样漫长的路径,因此提交评论可能需要数十秒的时间,但聊胜于无吧。希望 GFW 早日放过 Blogger,这样功能就能完全恢复正常了。
另外,修改了一下模板,把 blogger.com 上引用的 CSS 以及 JS 文件的地址都改由 DreamHost 上的 HTTP 中转读取,这样在打开 Blog 页面时,浏览器不用再等待这些文件的 HTTP 请求超时,速度应该能快不少。
Gregory Song 的有关 IT 技术的博客。内容涉及 WEB、Java、Google、Blogger、J2ME 等手机相关技术。Gregory Song,80 后,白羊座,IT 从业者,清瘦。
Showing posts with label AJAX. Show all posts
Showing posts with label AJAX. Show all posts
Tuesday, May 26, 2009
Friday, October 17, 2008
Blogger 的相关文章和热门文章
看到很多别人的 Blog 在文章页面下方都有“相关文章”和“热门文章”的列表,无疑能够增加访问者继续阅读文章的兴趣。可是 Google 的 Blogger 没有这样的功能,于是自己想办法也添加了一个。
由于 Blogger 并没有提供相关的模板标签(Tags)来支持这样的功能,因此自己只好用 PHP 和 MySQL 建立了一个简单的数据维护和查询系统,然后用 AJAX 的方式在页面上显示出来。具体来讲有以下内容:
修改好模板以后,将整个 Blog 重新发布,现在这些功能已经调试好并上线了。顺便抱怨一下,对于用 FTP 发布的 Blogger 来讲,帖子多了以后,整站重新发布,真是一个漫长的过程啊。
在修改模板的同时,也顺便改了一下首页上提示阅读全文的方式,将原来的“点击这里阅读全文”的文字链接改成了图标,希望这样看起来更醒目一些,在我另一个非技术的 Blog 上可以看到效果。
另外,最初做的模板的 PSD 文件找不到了,也忘了当时在标题部分用的哪种字体。这给后面添加新的标题带来很多麻烦。于是趁这次修改模板,一并将标题的图片都修改了。找了很多字体,也研究了很久,挑了 10 种非衬线(Sans Serif)字体出来,最后选中的竟然是 Windows XP 自带的 Lucida Sans Unicode。
由于 Blogger 并没有提供相关的模板标签(Tags)来支持这样的功能,因此自己只好用 PHP 和 MySQL 建立了一个简单的数据维护和查询系统,然后用 AJAX 的方式在页面上显示出来。具体来讲有以下内容:
- 利用 Google Blogger 的 Feed 接口将文章的 ID、标题、标签、URL、发布及修改时间等内容用程序导入到数据库。
- 将 Google Analytics 的页面浏览数统计(统计报告 » 内容 » 最常见内容)数据导出成文本文件,再通过程序导入到数据库。
- 用 PHP 建立一个“相关文章”的查询接口。输入参数为文章的 ID,输出为指定数量的相关文章列表。具体算法上,先用 ID 查出基准文章的标签,然后在数据库中文章中比对标签匹配的数量,按照标签匹配数量从多到少找出相关的文章。
- 对于热门文章,有两种计算方法。一种是按有史以来所有文章的浏览量来排序,但是用这种方法得到的结果,基本上都是 2005 年很老的文章,而很多有意义的新文章却很难出现。于是我采用了另一种算法,即按照每日平均浏览量来排序,这样比较新的浏览量比较大的文章也能出现了。
修改好模板以后,将整个 Blog 重新发布,现在这些功能已经调试好并上线了。顺便抱怨一下,对于用 FTP 发布的 Blogger 来讲,帖子多了以后,整站重新发布,真是一个漫长的过程啊。
在修改模板的同时,也顺便改了一下首页上提示阅读全文的方式,将原来的“点击这里阅读全文”的文字链接改成了图标,希望这样看起来更醒目一些,在我另一个非技术的 Blog 上可以看到效果。
另外,最初做的模板的 PSD 文件找不到了,也忘了当时在标题部分用的哪种字体。这给后面添加新的标题带来很多麻烦。于是趁这次修改模板,一并将标题的图片都修改了。找了很多字体,也研究了很久,挑了 10 种非衬线(Sans Serif)字体出来,最后选中的竟然是 Windows XP 自带的 Lucida Sans Unicode。
Thursday, May 29, 2008
用 AJAX 实现 Blogger 页内评论
之前服务器上有 Java 环境时,一直用一个自己写的 Servlet 作为中间代理来向 Blogger 的评论页面 POST 表单数据,实现页面内的评论操作,后来转挂在朋友的 IIS 服务器下,由于对 ASP 不熟,这一功能就一度取消了。现在购买了新的 Linux PHP 服务器,因此用 PHP 重新写了一个同样功能的中间代理来实现这一功能,并且实现成了 AJAX 的模式。评论内容的读取也一样通过 Blogger Feed 的 JSON 模式读取,因此提交评论后可以立即显示出来,而不用再等待 Blogger 重新生成 HTML 页面并通过 FTP 上传这一漫长的过程。(虽然实际上后台它还是不可避免的执行了这个过程。)
经过多次测试,应该可以用了。关于 Spam 的问题,以前的验证码是直接读取的 Blogger 页面的 Captcha 图片,现在 Google 改变了表单结构以至于程序已经无法自动做这个动作。所以我取消了 Blogger 自己的 Captcha 验证,自己写了个简单的加减法验证,虽然仍然不能完全杜绝 Spam,但已经比几天前测试时裸奔的情况好多了。当时夸张到一个下午一张帖子被贴了 50 多条 Spam 评论。毕竟传说 Google 的 Captcha 也已经被破解了么,同样不能完全杜绝 Spam。 ;-)
另外,Backlink 不显示的问题也修正了。不过,经过前端时间页面恶意代码事件的影响,目前似乎已经没什么 Backlink 了…… :-(
经过多次测试,应该可以用了。关于 Spam 的问题,以前的验证码是直接读取的 Blogger 页面的 Captcha 图片,现在 Google 改变了表单结构以至于程序已经无法自动做这个动作。所以我取消了 Blogger 自己的 Captcha 验证,自己写了个简单的加减法验证,虽然仍然不能完全杜绝 Spam,但已经比几天前测试时裸奔的情况好多了。当时夸张到一个下午一张帖子被贴了 50 多条 Spam 评论。毕竟传说 Google 的 Captcha 也已经被破解了么,同样不能完全杜绝 Spam。 ;-)
另外,Backlink 不显示的问题也修正了。不过,经过前端时间页面恶意代码事件的影响,目前似乎已经没什么 Backlink 了…… :-(
Labels:
AJAX,
BloggerHack,
Feed,
JavaScript,
JSON,
PHP,
博客维护,
评论
Subscribe to:
Posts (Atom)