FBrowserCEF3Lib浏览器开发技术交流网址

 找回密码
 立即注册
查看: 3662|回复: 2

CEF3专辑-进阶篇-06-CefSettings 类的应用及技巧

[复制链接]

签到天数: 32 天

[LV.5]常住居民I

10

主题

34

回帖

554

积分

中级会员LV1

太阳月亮月亮星星

积分
554
发表于 2025-2-14 08:37:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 KenTien 于 2025-3-11 08:31 编辑

1. 主要功能
single_process
设置为ture时,browser和render使用同一个进程。Chromium 不正是支持此运行模式,并且不如默认的多进程稳定。
no_sandbox
沙盒是在受限的安全环境中运行应用程序的一种做法,这种做法是要限制授予应用程序的代码访问权限。沙盒中的所有改动对操作系统不会造成任何损失。设置为ture(1) 以禁止子进程的沙箱。
multi_threaded_message_loop
多线程消息循环,为false时,可以调用CefRunMessageLoop或者CefDoMessageLoopWork函数来触发Cef消息循环,这时浏览器进程的UI线程就是调用CefRunMessageLoop或者CefDoMessageLoopWork函数的线程。当为true时。浏览器进程的UI线程是另外的线程。设置multi_threaded_message_loop为true则使用多线程消息循环。一般默认为false,使用定时器进行事件触发CefDoMessageLoopWork来进行事件处理。(仅在windows上支持此选项)
external_message_pump
设置为true(1)来控制浏览器进程主(UI)线程消息泵,通过CefBrowserProcessHandler :: OnScheduleMessagePumpWork()回调进行调度。如果必须将CEF消息循环集成到现有的应用程序消息循环中,建议将此选项与CefDoMessageLoopWork()函数结合使用。对于大多数用户,建议不要启用此选项;禁用此选项并使用 CefRunMessageLoop()函数或multi_threaded_message_loop(如果可能)。
windowless_rendering_enabled
离屏渲染,需要在CefRenderHandler里实现OnPaint。设置为true(1)以启用无窗口(屏幕外)渲染支持。如果应用程序不使用无窗口渲染,请不要启用此值,它可能会降低某些系统上的渲染性能。
command_line_args_disabled
cef3和chromium中的许多特性都可以用命令行参数来设置。这些参数使用”–some-argument[=optional-param]”的格式并通过CefExecuteProcess()和CefMainArgs结构体传递给cef。禁用命令行参数,在调用CefInitialize()函数之前,将CefSettings.command_line_args_disabled设为true。指定主应用程序的命令行参数,需要实现CefApp::OnBeforeCommandLineProcessing()方法。指定传递给子进程的命令行参数,需要实现CefApp::OnBeforeCommandLineProcessing()方法。
persist_session_cookies
在使用全局cookie管理器时,默认情况下, 要保持会话cookie(没有到期日期或有效期的间隔),将此值设置为true(1)。会话cookie通常是暂时的,大多数Web浏览器不会持久化。A | cache_path | 还必须指定值以启用此功能。也可以使用“persist-session-cookies”命令行开关进行配置。可以通过CefRequestContextSettings.persist_session_cookies值覆盖各个CefRequestContext实例。
persist_user_preferences
将用户首选项作为JSON文件保存在缓存路径目录中将此值设置为true(1)。A | cache_path | 还必须指定以启用此功能。也可以使用“persist-user-preferences”命令行开关进行配置。可以通过 CefRequestContextSettings.persist_user_preferences值覆盖各个CefRequestContext实例。
log_severity
此项设置日志级别。只有此等级、或者比此等级高的日志的才会被记录。此项可以通过命令行参数“log-severity”配置,可以设置的值为“verbose”,“info”,“warning”,“error”,“error-report”,“disable”。
pack_loading_disabled
设置为true(1)以禁用资源和区域设置的包文件加载。如果禁用了包文件的加载,则必须为浏览器提供资源包处理程序并通过CefApp :: GetResourceBundleHandler()呈现进程。也可以使用“disable-pack-loading”命令 进行开关进行配置。
remote_debugging_port
此项可以设置1024-65535之间的值,用于在指定端口开启远程调试。例如,如果设置的值为8080,远程调试的URL为http://localhost:8080。CEF或者Chrome浏览器能够调试CEF。此项也可以通过命令行参数“remote-debugging-port”配置。
uncaught_exception_stack_size
捕获未捕获异常的堆栈跟踪帧数。指定一个正值以启用CefRenderProcessHandler::OnUncaughtException()回调。指定0(默认值)和不会调用OnUncaughtException()。也可以使用uncaught-exception-stack-size”命令行开关进行配置。
ignore_certificate_errors
设置为true(1)以忽略与无效SSL证书相关的错误。启用此设置可能会导致潜在的安全漏洞,例如“中间人”攻击。从Internet 加载内容的应用程序不应启用此设置。也可以使用“ignore-certificate-errors”命令行开关进行配置。可以通过 CefRequestContextSettings.ignore_certificate_errors值覆盖各个CefRequestContext实例。
enable_net_security_expiration
设置为true(1)以启用内置网络安全信息的日期到期(即证书透明度日志,HSTS预加载和固定信息)。启用此选项可提高网络安全性
background_color
在加载文档之前和没有指定文档颜色时用于浏览器的背景颜色。alpha分量必须是完全不透明(0xFF)或完全透明(0x00)。如果alpha分量完全是不透明的,则RGB分量将用作背景颜色。如果 alpha组件对于窗口浏览器完全透明,则使用默认值opaque white。如果alpha组件对于无窗口(屏幕外)浏览器是完全透明的,那么将启用透明绘制
browser_subprocess_path
16.  设置用于启动子进程单独执行器的路径。(cefprocess.exe)。如果在windows上或者linux上为空,则使用祝金程的可执行文件。
framework_dir_path
macOS上的cef目录路径。如果此值为空,那么狂姐必须存在于顶级应用程序包中。
cache_path
设置磁盘上用于存放缓存数据的位置。如果为空则将以“隐身模式”创建浏览器,其中内存缓存用于存储,并且没有数据持久保存到磁盘。如果指定了缓存路径,则 localStorage 等HTML5数据库将仅在会话中保持不变。可以通过CefRequestContextSettings.cache_path值覆盖单个CefRequestContext实例。
user_data_path
将拼写检查字典文件等用户数据存储在磁盘上的位置。如果为空,则将使用默认的特定于平台的用户数据目录(Linux上的“〜/ .cef_user_data”目录,“Mac OS X上的〜/ Library / Application Support / CEF / User Data”目录Windows上用户“Local Settings\Application Data\CEF\User Data”目录)。
user_agent
设置客户端标识,服务器可以识别是从哪里发来的请求。
product_version
将作为默认User-Agent字符串的产品部分插入的值。如果为空,将使用Chromium产品版本。如果 | userAgent | 指定此值将被忽略。也可以配置使用“product-version”命令行开关。
locale
此设置项将传递给Blink。如果此项为空,将使用默认值“en-US”。在Linux平台下此项被忽略,使用环境变量中的值,解析的依次顺序为:LANGUAE,LC_ALL,LC_MESSAGES和LANG。此项也可以通过命令行参数“lang”配置。
log_file
此项设置的文件夹和文件名将用于输出debug日志。如果此项为空,默认的日志文件名为debug.log,位于应用程序所在的目录。此项也可以通过命令参数“log-file”配置。
javascript_flags
初始化V8 JavaScript引擎时将使用的自定义标志。使用自定义标志的后果可能未经过充分测试。也使用“JS-标志”命令行开关//配置。
resources_dir_path
此项设置资源文件夹的位置。如果此项为空,Windows平台下cef.pak、devtools_resourcs.pak、Mac OS X下的app bundle Resources目录必须位于组件目录。此项也可以通过命令行参数“resource-dir-path”配置。
locales_dir_path
此项设置locale文件夹位置。如果此项为空,locale文件夹必须位于组件目录,在Mac OS X平台下此项被忽略,pak文件从app bundle Resources目录。此项也可以通过命令行参数“locales-dir-path”配置。
accept_language_list
逗号分隔的有序语言代码列表,没有任何空格将在“Accept-Language”HTTP标头中使用。可以使用CefBrowserSettings.accept_language_list值在每个浏览器的基础上覆盖。如果两个值都为空,则使用“en-US,en”。可以通过CefRequestContextSettings.accept_language_list值覆盖各个CefRequestContext实例。

2.  全局缓存
这项功能可以保存网页的账号密码,下次登录状态为已登录

[C++] 查看源码 复制代码
// 初始化缓存
std::string storagePath = TEXT("D:\\Data\\chchepath")
CefString(&settings.cache_path).FromString(storagePath);
settings.persist_session_cookies = true;//


3. 独立缓存

[C++] 查看源码 复制代码
// 首先指定根路径,独立缓存的路径在下面
  CefSettings settings;
  std::string storagePath = "D:\\CacheData";
  CefString(&settings.root_cache_path).FromString(storagePath);
//用到这个头文件
#include "include/cef_request_context_handler.h"
// 以下处理
std::string cache_path = "D:\\CacheData";
cache_path += std::to_wstring(0);
CefRequestContextSettings request_context_settings;
CefString(&request_context_settings.cache_path).FromWString(cache_path);
// 保留cookies
request_context_settings.persist_session_cookies = true;
request_context_settings.persist_user_preferences = false;
CefRefPtr<CefRequestContext> request_context = CefRequestContext::CreateContext(request_context_settings, nullptr);
// Create the first browser window.
CefBrowserHost::CreateBrowser(window_info, handler, url, browser_settings,
                              nullptr, request_context);








评分

参与人数 1金钱 +10 贡献 +10 收起 理由
mosheng + 10 + 10 很给力!

查看全部评分

签到天数: 226 天

[LV.7]常住居民III

1

主题

166

回帖

5456

积分

超级版主

皇冠皇冠皇冠太阳

积分
5456

永久VIP会员活跃会员热心会员推广达人宣传达人突出贡献优秀版主荣誉管理论坛元老

发表于 2025-2-14 20:04:10 | 显示全部楼层
全面,学习了

签到天数: 695 天

[LV.9]以坛为家II

294

主题

606

回帖

1万

积分

超级版主

皇冠皇冠皇冠太阳

积分
17933

活跃会员热心会员永久VIP会员推广达人宣传达人突出贡献优秀版主荣誉管理论坛元老

QQ
发表于 2025-2-14 11:05:15 | 显示全部楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们 在线手册 视频教程 赞助支持 CEF官网 易语言官网 火山开发官网
拒绝任何人以任何形式在本网站发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表本网站立场!

网址帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!

Archiver| 手机版| 小黑屋| 联系QQ:283987887 劰载中...

Powered by Discuz! X5.0 GMT+8, 2026-9-17 07:17 , Processed in 0.028787 second(s), 13 queries , Redis On.

 川公网安备51090302000262 蜀ICP备2023034329号
快速回复 返回顶部 返回列表