Htmlunit 设置缓存文件
起因:最近用Htmlunit爬取网页。demo运行起来后,发现速度相当慢,一直在不停的加载js文件,偶尔还会报错,js超时等。抓包工具看了一下请求,发现一直在不停的下载js文件。按理说请求过js文件后,本地是会缓存这些文件的。避免再次从服务器下载,增加服务器压力和降低客户端页面加载速度。由此便开始大量的百度,寻求解决方案。一番操作下来,千篇一律的配置文章看了几十个,但是还是没解决问题。无奈只能沉下气来,从新审视代码。
没想到回来看代码,很快便发现WebClient有一个Cache属性,默认size为40。立即debug一下, 发现其实Cache是有存储文件的。那么很明显是请求的js太多了,设置size到合适的数值,重新debug,速度瞬间上来了,js也缓存上了。贴上配置代码:
webClient.getOptions().setActiveXNative(false);
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setRedirectEnabled(true);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setDoNotTrackEnabled(true);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
webClient.getCache().setMaxSize(100);
若爬取的页面不需要渲染js,可以直接设置如下:
webClient.getOptions().setJavaScriptEnabled(false);
直接禁用js。
Htmlunit 设置缓存文件的更多相关文章
- Selenium/HtmlUnit设置代理获取JS生成的网页
通常我们使用Java提供的HttpURLConnection或者Apache的HttpClient获取的网页源代码都是直观可见的,其代码的内容和通过浏览器右键网页->点击查看网页源代码的内容一致 ...
- htmlunit设置只采集html,取消对css,javascript支持
引入htmlunit依赖 <!-- https://mvnrepository.com/artifact/net.sourceforge.htmlunit/htmlunit --> < ...
- Nginx_地址重写(rewrite)_日志管理(log_format)_压缩输出_Nginx设定限速_Nginx设置反向代理及反向代理缓存
Nginx地址重写 Nginx rewrite rewrite语法规则1).变量名可以使用 "=" 或 "!=" 运算符~ 区分大小写~* 不区分大小写^~ 禁 ...
- PHPcms 缓存的读取和设置
https://blog.csdn.net/huobobo124/article/details/76912632 1.PHPcms设置了保存和读取缓存的方法,其实现方法存储在PHPcms/lib/f ...
- Django缓存设置
由于Django构建得是动态网站,每次客户端请求都要严重依赖数据库,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中, ...
- nodejs prefix(全局)和cache(缓存)windows下设置
引:在安装完nodejs后,通过npm下载全局模块默认安装到{%USERDATA%}C:\Users\username\AppData\下的Roaming\npm下,这当然是不太对的默认. 1,安装L ...
- 12月13日上午Smarty模版原理
模板主要是用来让前端和后端分离的,前台页面只是一个前台页面,后台页面用php代码写逻辑,写完逻辑拿到前台显示. 一.写法 一般需要以下:写3个页面: 1.显示页面aa.html <!DOCTYP ...
- android 图片性能优化
本章讲述在android开发中,图片处理方面的优化.包括知识点为大图加载,图片压缩,图片缓存处理及开源图片处理框架Universal-Image-Loader. 1.图片引发的内存不足 当在andro ...
- Linux运维入门到高级全套常用要点
Linux运维入门到高级全套常用要点 目 录 1. Linux 入门篇................................................................. ...
随机推荐
- Linux的信号管理
man 7 signal #查看信号的实用信息 常用的信号: 信号名 编号 含义SIGHUP 1 无须关闭进程而让其重读配置文件SIGINT 2 ...
- 题解 【POI2008】KUP-Plot purchase
题面 先把题目意思讲一下吧: 给一个 \(n*n\) 的地图,每个格子有一个价格,找一个矩形区域,使其价格总和位于\([k,2k]\). 那么首先,可以想到,如果\(a[i][j]\)(格子的价格,下 ...
- SpringBoot常见报错及解决方法
问题一 Field redisUtil in com.sui.demo.controller.redisController required a bean of type 'com.sui.demo ...
- Java的当中的泛型
Java当中的泛型 01 import java.util.ArrayList; import java.util.List; public class Demo{ public static voi ...
- IT公司技术博客地址
IT公司技术博客 美团点评技术团队今日头条技术博客Tencent ISUX DesignTGideas-腾讯互动娱乐创意设计团队>AlloyTeam | 腾讯全端 AlloyTeam 团队 Bl ...
- Spring Boot教程(四十)使用Flyway来管理数据库版本
在上面的使用JdbcTemplate一文中,主要通过spring提供的JdbcTemplate实现对用户表的增删改查操作.在实现这个例子的时候,我们事先在MySQL中创建了用户表.创建表的过程我们在实 ...
- 消息模板-RabbitTemplate
RabbitTemplate是我们在与SpringAMQP整合的时候进行发送消息的关键类该类提供了丰富的发送消息的方法,包括可靠性消息投递.回调监听消息接口ConfirmCallback.返回值确认接 ...
- JavaWeb-SpringSecurity初认识
Spring Security 安全 百度百科 功能:Spring Security对Web安全性的支持大量地依赖于Servlet过滤器.这些过滤器拦截进入请求,并且在应用程序处理该请求之前进行某些安 ...
- fastjson =< 1.2.47 反序列化漏洞浅析
fastjson =< 1.2.47 反序列化漏洞浅析 iiusky 洛米唯熊 今天 文章出处: https://www.03sec.com/3240.shtmlhttps://www.secq ...
- 记一次zipkin和spring cloud bus冲突
问题表现spring boot 版本 2.0.6spring cloud 版本 Finchley.SR2 使用spring-cloud-starter-zipkin + 独立部署的zipkin 进行链 ...