我爱黑客网首页 设为首页
加入收藏
联系我们
 首 页  技术文章 下载中心 站长学院 交流论坛
 软件:
 文章:        教程:
 推荐: 我爱黑客网论坛
 
 
 
 
   
黑软: Q Q 软件 木马间谍 探嗅监听 溢出攻击 加密解密 漏洞扫描 脚本注入 远程控制 综合利用 聊天工具  
 
技术文章: 爱黑新闻 | 黑客攻防 | 网络技术 | 程序设计 | 系统操作 | 本站动态 | 业界动态 | 安全公告 | 病毒公告 | 八卦黑客
 
 
您当前的位置:我爱黑客 -> 黑客攻防 -> 技术杂谈 -> 文章内容  
栏目导航
· Q Q 攻防 · 黑客入门
· 攻防实战 · 安全初步
· 工具详解 · 黑客教程
· 漏洞研究 · 黑客编程
· 技术杂谈
热门文章
· 为什么网站设计标准化..
· Ajax内部交流文档
· 自适应图片大小的弹出..
· 纯JS实现的动态表格
· 本来想写个Cs的Web服务..
· 看程序员们是如何喝酒..
· 使用MD5变换算法防穷举..
· JavaScript系列之防止..
· RSS 2.0 简明资料
· 在Blog上追加了「牛啦..
· 纯字符模仿Longhorn/o..
· 操作cookie的类 (DHTM..
相关文章

· [图文] Ajax: A New ..
· [图文] Ajax内部交流..
· Web2.0十大Ajax安全..
· IBM联合各软件公司 ..
· ChinaJoy上海闭幕 国..
· AjaxPortal LoginAD..
查看更多与AJAX应用于BLoG文章聚合(通过RSS)相关内容

AJAX应用于BLoG文章聚合(通过RSS)
作者:佚名  来源:不详  发布时间:2007-1-8 12:27:04  发布人:ghostfire

减小字体 增大字体


有时候,你的BLoG可能需要这样的功能:

在自己BLoG上聚合并显示朋友BLoG的最新文章,这样方便自己及时了解朋友的消息,另外,也方便访问者找到和本BLoG相关的BLoG和文章。

这个功能你可以叫它“Blog聚合”或者“Blog联播”,目前,实现这样功能的软件或服务都有限制:比如, Terac SinfoniaLilinaMXNA 虽然功能都很强大,但是需要安装,不能自由定制,不能嵌入到Blog侧边栏。另一方面,目前提供这样服务的BSP只能聚合本系统内的用户,限制也很多。

为了解决以上问题,我采用AJAX(Asynchronous JavaScript + XML)技术实现了在自己BLoG上聚合并显示朋友BLoG的最新文章的功能,你可以根据需要,进行自由定制。默认是支持RSS 2.0规范的,Terac Miracle、Movable Type、Word Press、Donews / 博客园 / CSDN采用的.Text系统都能很好的支持,你可以自由修改,来支持RSS 0.92、RSS 1.0、Atom 0.3。显示效果可以看我这个BLoG右下角的“朋友的最新BLoG”。

为什么采用AJAX呢?首先,聚合别人的RSS不能影响自己网站的速度,所以需要异步执行,其次,RSS本身就是一个很规范的XML文档,另外,由于聚合内容大小不可定,所以必须要局部刷新,最重要的一点,采用AJAX完全把加载解析XML的操作放到客户端进行处理,节省服务器带宽和资源,最后,这个功能我完全用JavaScript实现的,这样,不管你的BLoG是ASP、.Net、PHP、JSP、Perl,甚至纯HTML的都能用。下面说用法:

首先,在你BLoG侧边栏合适位置加入这样一段代码:

代 码 :
<script src="Ajax4RSS" type="text/javascript"></script> 


 然后将下面的内容保存成“Ajax4RSS”(也可以直接下载我的Ajax4RSS),然后上传到服务器相应的位置:

代 码 :
//你可以自由添加符合RSS 2.0规范的 RSS
processRSS('http://www.xintiantang.com/andy/index.xml');
processRSS('http://www.xintiantang.com/joywave/index.xml');
processRSS('http://www.xintiantang.com/skype/index.xml');
processRSS('http://www.donews.net/keso/rss.aspx');
function processRSS(url){
  var req = getXMLHttpRequest();
  req.onreadystatechange = function () {
    if (req.readyState == 4 && req.status == 200) {
      var doc=req.responseXML.documentElement; 
      parseRSS(doc);
    }
  }
  req.open("GET",url, true);
  req.send(null);
}
function parseRSS(doc) {
 //如果要用RSS 0.92, RSS 1.0, Atom 0.3,你需要改下面3行
  var BLoGName=doc.getElementsByTagName("title")[0].firstChild.data;
  var entryName=doc.getElementsByTagName("title")[1].firstChild.data;
  var entryLink=doc.getElementsByTagName("link")[1].firstChild.data;
document.getElementById('ajax_rss').innerHTML += '<a target="_blank" href="'+entryLink+'" title="'+BLoGName+'">'+entryName+'</a><br/>'; }
function getXMLHttpRequest() {
    var xmlhttp;
    try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {
            xmlhttp = false;
        }
    }
    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
        xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
}


好了,安装结束,测试一下吧!显示效果可以看我这个BLoG右下角的“朋友的最新BLoG”。

需要说明的是:由于网速和对方服务器的原因,AJAX不能保证一定能获得RSS,所以有时可能会显示不出来。另外,建议不要加太多的BLoG,由于装载和解析放到客户端,过多的BLoG可能会导致客户端的系统运行缓慢,甚至浏览器崩溃。

更新:2005/06/09 11:33 

由于安全原因,XMLHttpRequest不能cross domain,所以只能聚合当前domain上的内容,比如你在新天堂的BLoG只能聚合新天堂的,在博客园上的BLoG只能聚合博客园的,其实对于部分人,这已经足够了。搜了一下,我找到了解决cross domain问题的方案:方法一,用Apache mod_rewrite把other domian的RSS重写成本地的,这需要配置服务器,比较麻烦,不通用。方法二,用ASP、.Net、PHP、JSP、Perl写一个Proxy脚本,我写好了JSP和PHP的,稍后放出。别的脚本的就没办法了,如果有人写好了,就发给我吧,共享出来:)。

更新:2005/06/09 17:40 

其实这个东西适合访问量不大的BLoG使用,如果你的BLoG访问量很大的话,顺带着朋友BLoG的RSS访问量也很大,很浪费朋友BLoG所在服务器的带宽^_^。当然,你可以用BLoGlines或feedburner中转,浪费鬼子的带宽去:D。

如暖暖鱼所说的,最好提供这样的服务,不过我做的东西太多了,我在考虑中^_^。不过要做好需要考虑很多问题:Cache、聚合频率、聚合效率、RSS存储等,如果在做这个或要做的朋友也请考虑一下这些问题吧。

PHP代码(保存成keso.php,我聚合了Keso的,请别见怪:)。

代 码 :
header( "Content-Type: text/xml" );
//TODO 应该用Cache
$rssData = file_get_contents("http://www.donews.net/keso/rss.aspx");
echo $rssData;
?>


然后上传到服务器,在Ajax4RSS里加入这一行:processRSS('http://www.xintiantang.com/keso.php');,这样就解决了XMLHttpRequest的cross domain问题。


[Last Edited By KusTa @ 2005-06-18 03:37 PM]

查看更多与AJAX应用于BLoG文章聚合(通过RSS)相关内容

[ ] [返回上一页] [打 印] [收 藏]
上一篇文章:
下一篇文章:
      本来想写个Cs的Web服务,又半途而废了,变成Web版的Ping了       Ajax内部交流文档
∷相关文章评论∷   (评论内容只代表网友观点,与本站立场无关!) [发表评论]
 
 
 
 
晋ICP备05008232   维护网络安全、传播安全技术才是我们的目标! 
 
关于本站 - 网站帮助 - - 下载声明 - 友情连接 -网站地图