http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 6957|回复: 8

[反馈建议] 飞哥,提个修改建议给你

[复制链接]
发表于 2017-6-3 17:27:55 | 显示全部楼层 |阅读模式
背景。一个页面,服务器会根据来源IP不同来返回不同的页面信息。
现象:用你的框架,每隔1s循环GET一个网页的数据。中途,挂上VPN切换到另外的IP。此时GET到的数据,跟之前没挂VPN获取的数据是一样的。关闭程序再打开,获取到的页面就是挂VPN后的信息了。

无效的解决方法:
keep-alive修改。资源回收。

分析:
查看源码发现,Base文件夹下的HttphelperBase.cs中,GetHtml方法获取页面响应用是这样写的:
               //请求数据
                using (response = (HttpWebResponse)request.GetResponse())
                {
                    GetData(item, result);
                }

这种写法在获取到页面信息后,似乎并没有释放掉请求实例。
每次请求时,分别new一个HttpHelper,item,result似乎还是会获得上一次的请求。


修改建议:
我在GetData方法里的最后,加上
            request = null;
            response = null;

后,发现不用启动程序也可以获取正确的响应数据了。问题得到解决。

这个框架是飞哥搞的,你肯定比我更了解这个框架。我加上这句虽然把问题解决了,但是并不一定是最好的位置。飞哥可以考虑一下加在哪里更合适。或者还有什么其他方法能解决这个问题。

希望你的框架越来越好。


本帖被以下淘专辑推荐:



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2017-6-5 08:31:13 | 显示全部楼层
很感谢你的建议,这个我有时间做个测试,看怎么修改比较适合,这个问题一直存在,不过也是在特定需求下才能出现,一般情况下是没有问题的,不过如果每次清理,多少还是会影响性能了,我会考虑尝试增加一个开关设置的
 楼主| 发表于 2017-6-5 09:45:30 | 显示全部楼层
站长苏飞 发表于 2017-6-5 08:31
很感谢你的建议,这个我有时间做个测试,看怎么修改比较适合,这个问题一直存在,不过也是在特定需求下才能 ...

嗯。我也是有点担心性能。不过这样至少可以保证每次获取到的数据都是最新的。看飞哥你准备怎么改了
发表于 2017-6-5 09:59:30 | 显示全部楼层
zdking 发表于 2017-6-5 09:45
嗯。我也是有点担心性能。不过这样至少可以保证每次获取到的数据都是最新的。看飞哥你准备怎么改了

那就加开关,
发表于 2017-6-6 19:16:38 | 显示全部楼层
加个开关好了.默认关闭
发表于 2017-6-16 12:47:48 | 显示全部楼层
强烈支持楼主ing……
发表于 2017-11-7 15:20:58 | 显示全部楼层
这个想法好
发表于 2017-11-7 17:04:09 | 显示全部楼层
版本已经更新
重置request 配置属性
IsReset即可Httphelper万能框架新增重置重置request,response为空的属性
http://www.sufeinet.com/thread-19269-1-1.html
(出处: 苏飞论坛)


您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-19 18:47

© 2014-2021

快速回复 返回顶部 返回列表