【发布时间】:2019-05-09 10:06:55
【问题描述】:
我正在尝试创建一个基本上包含多个浏览器实例的程序(为了不共享缓存),并且在每个浏览器实例上,我需要打开一个网页并留在上面。
但是,正如您可能假设的那样,它会消耗大量的 RAM,并且还会对 CPU 造成太大压力。我的想法基本上是禁用所有“外观”并将其作为某种后台进程运行。基本上,模拟打开的浏览器但不显示任何内容,从而节省 RAM 和 CPU。
我不需要查看这些浏览器实例中发生了什么,我只需要打开它们并在启动时运行一些 Javascript。目前,我有这个程序,但是所有的浏览器实例都显示出来了,它占用了太多资源。我需要能够运行 50-60 个浏览器实例。
我正在使用 .Net 和 C# 以及 CefSharp(铬浏览器)开发它
有没有人有任何建议我可以在这件事上做些什么?
【问题讨论】:
-
您可以使用 CefSharp.Offscreen 并告诉浏览器它已隐藏,因此它不会渲染帧
-
'我需要能够运行 50-60 个浏览器实例' => 我真的认为你需要退后一步考虑一下。这听起来真的像一个 X-Y 问题。您说您只需要他们在启动时运行一些 Javascript 并保持打开状态,但如果他们仅在启动时运行一些 Javascript,他们保持打开状态的目的是什么?
-
这可能就是我要找的东西!我会试试@tolanj 我需要留在那些页面上,以便在那里有活动的套接字连接。只有这样,服务器才会将我视为“已连接”
-
如果要求如您所说,拥有一个通过近乎透明的代理连接的 n 个浏览器池。在浏览器完成后让代理保持套接字连接。我确实很难理解为什么您需要 50-60 个打开且显然永久不活动的连接。