友链的朋友圈 RSS的聚合页 (WordPress->PIX主题篇&本地解析版)
本文是《技术相关(共36篇)》目录的第 17 篇。阅读本文前,建议先阅读本文前3篇文章:
本文适用于友链网站内容频繁更新的情况
友链的朋友圈 RSS的聚合页 (WordPress->PIX主题篇&在线解析版)请参考如下文章:
之所以又出了一个本地解析版,是因为在线解析版始终未能解决两个问题:第一、我有个别友链网站,明明feed地址在浏览器里能够直接访问,并且能够正常显示rss内容,但就是解析不了,导致聚合页不能显示这些友链网站。第二、虽然代码采用了异步加载及缓存机制等优化措施,但每次在线解析时间长短都与友链网站的访问速度有关,如果网络不好甚至网站打不开,要么解析时间很长,要么聚合页内无法显示站点内容,不如把各站点的feed缓存到本地服务器,到时直接在本地解析。
20240115更新代码二,与代码一区别在于代码一是根据比较远程RSS的MD5和本地的MD5值是否一致来判断远程RSS是否更新,代码二是根据比较远程RSS的内容和本地的内容是否一致来判断远程RSS是否更新,更真实一些。
说一下大致逻辑:
现在的逻辑是获取后台所有友情链接网站feed地址后直接在线解析,修改后的逻辑是不再直接在线解析,而是第一次运行首先从wordpress后台检测友链网站的RSS地址是否填写,如果没填写为空则忽略该友链网站,如果已填写不为空,只访问这些RSS地址已经填写的友链网站的feed地址,然后查看feed地址页面的源代码,并各自计算出源代码的md5值,以友情链接网站域名.md5值.xml为文件名将各自的rss的源代码内容分别保存在当前主题目录中的rsscache文件夹下,然后在本地分别直接解析这些友情链接网站域名.md5值.xml,显示效果同现有代码不变。
rsscache文件夹下这些友情链接网站域名.md5值.xml的有效保存期为8个小时,8个小时内直接本地解析rsscache下的xml文件。8个小时后,服务器自动访问这些RSS地址已经填写的友链网站的feed地址并再次计算源代码的md5值进行比较,如果md5值变化则重新下载最新XML文件,并自动删除旧文件,如果md5值没有变化则无需下载。但是,如果8个小时之内我删除了rsscache下的所有文件,都将被视作第一次运行。
对于feed地址浏览器能够访问并且能够显示rss内容但是一直无法保存的友链网站,在rsscache文件夹下自动建立对应域名.md5值.xml文件,把这些无法保存RSS的友链网站,加入忽略域名里,即便是8小时后,只要rsscache文件夹下还存在该xml文件,就不会重新获取覆盖,只能手工修改。
用此方法能够解决一部分网站无法在线解析时的问题,但是可能还是有一部分无法获取,不用着急,因为是在本地了,把不能正常获取的rss自己动手复制粘贴到对应域名的xml文件中,重新获取一下就全部搞定了。
您已阅读完《技术相关(共36篇)》目录的第 17 篇。请继续阅读本文后3篇文章:
obaby
缓存还是有必要的,直接请求问题很多,并且数据量大了请求等待时间太长。
似水流年
是啊。看了你的网站,钟MM既能开发应用又能出书投稿,膜拜一下大神!🙏🎁
网友小宋
有的站点rss订阅链接有问题,页面会报解析失败。建议增加忽略功能。
似水流年
已经更新给你留言了。