海淀区网站建设公司,有哪些做问卷调查的网站好,wordpress结婚模板,北京学会网站建设摘要#xff1a; 使用 puppeteer 结合函数计算#xff0c;可以快速的构建弹性的服务完成各种功能#xff0c;包括#xff1a;生成网页截图或者 PDF、高级爬虫#xff0c;可以爬取大量异步渲染内容的网页、模拟键盘输入、表单自动提交、登录网页等#xff0c;实现 UI 自动…摘要 使用 puppeteer 结合函数计算可以快速的构建弹性的服务完成各种功能包括生成网页截图或者 PDF、高级爬虫可以爬取大量异步渲染内容的网页、模拟键盘输入、表单自动提交、登录网页等实现 UI 自动化测试和捕获站点的时间线以便追踪你的网站帮助分析网站性能问题
简介使用 puppeteer 结合函数计算可以快速的构建弹性的服务完成各种功能包括生成网页截图或者 PDF高级爬虫可以爬取大量异步渲染内容的网页模拟键盘输入、表单自动提交、登录网页等实现 UI 自动化测试捕获站点的时间线以便追踪你的网站帮助分析网站性能问题接下来将基于一个脚手架项目开发我们自己 puppeteer 项目。下载项目 git clone -o starter-kit https://github.com/awesome-fc/puppeteer-fc-starter-kit.git your_project_name项目结构├── lib chrome headless 依赖的共享库打包的时候拷贝到打包项目的根目录下
├── chrome
│ ├── buildChrome.sh 编译 chrome headless shell 脚本基于它可以编译最新的版本
│ └── headless_shell.tar.gz 编译后的 chrome headless 二进制打包文件
├── src
│ ├── index.js 函数调用入口文件函数 handler 为 index.handler您的业务代码写在这里
│ └── starter-kit
│ ├── config.js 通过环境变量获取相关配置属性如chrome 执行目录和安装目录等配置
│ ├── local.js 本地测试操作 chrome headless 的 API 是否正确通过执行命令npm run local
│ └── setup.js 安装 chrome headless 相关逻辑代码如基于 OSS 安装或者本地目录安装
├── package.json
└── package.zip 输出函数计算打包文件通过命令npm run package 或 npm run package-nochrome 如何写业务代码index.js 文件const setup require(./starter-kit/setup);exports.handler async (event, context, callback) {const browser await setup.getBrowser(context);exports.run(browser).then((result) callback(null, result)).catch((err) callback(err));
};exports.run async (browser) {// 实现您自己的业务代码// 下面是一个示例代码需要替换成您自己的业务代码// 示例实现了对固定网页截图并返回图片的功能const page await browser.newPage();await page.goto(https://fc.console.aliyun.com);return page.screenshot({clip: {x: 200,y: 60,width: 780,height: 450,},});
};本地测试执行命令 npm run local 。测试您操作 chrome headless 的相关 api 是否正确运行。编译打包包含 chrome headless执行命令npm run package 。命令会将 chrome headless 文件一起打包进项目放在项目根目录函数执行的时候默认将 chrome headless 安装到 /tmp 目录。不包含 chrome headless执行命令npm run package-nochrome 。命令不会将 chrome headless 文件一起打包进项目你需要额外将 chrome-headless 上传到 OSS通过环境变量告诉函数如何从 OSS 下载并安装默认将 chrome headless 安装到 /tmp 目录。为函数计算设置环境变量CHROME_BUCKET(必填): chrome headless 上传到 OSS 的 bucketCHROME_REGION(必填): chrome headless 上传到 OSS 的 regionCHROME_KEY(必填): chrome headless 上传到 OSS 的 key。 默认值: headless_shell.tar.gz部署编译打包输出的文件package.zip通过函数计算控制台或者 fcli 命令工具上传已打包文件。fcli 上传已打包文件命令# 在相应 service 目录下mkf myFunction -h index.handler -f package.zip -t nodejs8 # 代码在本地的 package.zip 中为什么要使用函数计算函数计算是一个相对较新的事物可能大部分开发人员或架构师对它很陌生。微服务架构是当下很流行的一种系统架构微服务架构有没有不够完美的地方答案是肯定的。基于微服务架构我们需要考虑使用什么微服务框架来架构系统、需要多少台服务器、如何有效减轻运维负担等一些列问题。另外按照《福布斯》杂志的统计在商业和企业数据中心的典型服务器仅提供 5%15% 的平均最大处理能力的输出。这无疑是一种资源的巨大浪费。有没有办法解决上面的不足答案也是肯定的阿里云函数计算就是在这样的背景下应运而生的。如果把云计算理解成一个执行环境那么在这个环境里函数即业务逻辑的载体 数据即跟业务相关的输入与输出就是应用的核心有了函数、数据、事件这三者其它任何代码和框架无非是整个应用的胶水和UI罢了。那么最理想的情况就是用最少的时间写胶水将更多的时间投入到核心应用的开发中甚至彻底实现整个软件栈的微服务化。函数计算就是这里的胶水。开发效率项目开发效率传统微服务方式函数计算方式采购服务器等基础设施需要不需要管理服务器等基础设施需要不需要开发业务服务模块需要需要部署业务服务模块需要需要但是很简单提供了很多工具通过 nginx 搭建反向代理、https 和负载均衡需要不需要通过阿里云 API 网关或函数 HTTP 触发器可以实现搭建相关日志服务需要不需要通过日志开关开启日志服务配置安全访问规则需要不需要自带基础安全访问配置API 网关提供更多的配置运维负担重轻开发效率低高通常几天就能完成可靠性项目可靠性传统微服务方式函数计算方式峰值压力当峰值压力突增时计算资源扩容不及时容易导致服务过载弹性伸缩面对峰值压力错误处理需要自行处理服务器宕机进程崩溃等问题无需处理服务器等故障函数计算实现基础设施的容错项目架构基础设施管理比较复杂系统架构经过大量项目的验证和长时间的打磨相对稳定可靠很多成本项目成本传统微服务方式函数计算方式采购服务器等基础设施成本成本高利用率低无代码开发成本成本高包含基础架构代码和业务代码成本低只需关注业务代码开发函数计算成本无成本低按需付费每月还有一定免额运维成本成本高难度大成本低难度很小甚至可以不需要专门的运维人员集成阿里云其他产品成本如 OSS 和RDS 等成本高成本低提供对阿里云其他产品无缝集成安全项目安全传统微服务方式函数计算方式身份认证和访问控制需自行实现除非您显式的允许匿名调用函数函数计算将对每一个 API 调用进行身份验证。只有获得您的显式授权借助于阿里云访问控制服务RAM您的函数才可以访问其他云服务资源或者被其他用户/云服务调用。借助阿里云 API 网关您也可以使用 OpenID 等机制对函数调用进行身份验证操作追踪和审计需自行实现需自行实现数据安全需自行实现通过使用访问控制授权和函数计算环境变量等功能您不必再将访问凭证等敏感信息保存在代码中。所有您借助函数计算服务持久化保存的数据包括代码、环境变量等等都被加密存储。系统在运行代码之前将对代码进行完整性检测运行时安全需自行实现每个函数都在独立的、隔离的环境中被执行。函数计算提供与阿里云弹性计算ECS相同的隔离强度。函数计算会周期性的重置运行时环境并自动更新操作系统以及运行时依赖软件的安全补丁异常响应需自行实现函数计算允许您设置资源使用的上限确保您的费用消耗可控。同时函数计算提供函数调用次数流控次数错误率等指标。借助云监控您可以为相关指标设置监控报警快速响应异常情况总结函数计算有如下优势无需采购和管理服务器等基础设施专注业务逻辑的开发提供日志查询、性能监控、报警等功能快速排查故障以事件驱动的方式触发应用响应用户请求毫秒级别弹性伸缩快速实现底层扩容以应对峰值压力按需付费。只需为实际使用的计算资源付费适合有明显波峰波谷的用户访问场景原文链接本文为云栖社区原创内容未经允许不得转载。