Xinyuan Wang
Xinyuan Wang
## Cluster 总结 对于cluster的分析,得出以下结论: 1. cluster在创建子进程时,会在环境变量中增加标识,以此来区分主进程和子进程 2. listen函数在实现时对主进程和子进程进行了区分,在不同的进程中会执行不同操作 3. nodeJS封装了进程间通信的方法,支持在进程间发送句柄的功能,句柄可以是一个socket对象,一个管道等等 4. 一个端口只能被一个进程监听,但是该端口可以建立多个连接(accpet是产生的套接字),不同进程间可以共享这些套接字 5. 子进程的listen函数并没有监听端口,它在listen时将端口和地址等信息发送给主进程,由主进程进行监听。 6. 主进程在收到accept事件时,产生连接socket,并把它发送给子进程。子进程直接通过该socket跟client端进行通信
https://www.cnblogs.com/novak12/p/9304617.html
## 使用 Docker 部署 [https://github.com/ChelesteWang/prerender-alpine](https://github.com/ChelesteWang/prerender-alpine) Pull and run the image: ``` docker pull tvanro/prerender-alpine:6.3.0 docker run -p 3000:3000 tvanro/prerender-alpine:6.3.0 ``` Prerender will now be running on http://localhost:3000. Try the container...
## 使用 源代码 本地部署 ``` $ git clone https://github.com/prerender/prerender.git $ cd prerender $ npm install $ node server.js ```
## Prerender 原理 使用 Puppeteer 启动 Headless Chromium 浏览器对页面预渲染 #1 由于 prerender 默认配置对 CPU 消耗都很巨大,需要进行优化
## Nginx 配置 ``` location / { try_files $uri @prerender; } location @prerender { set $prerender 0; if ($http_user_agent ~* "googlebot|bingbot|yandex|baiduspider|twitterbot|facebookexternalhit|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest\/0\.|pinterestbot|slackbot|vkShare|W3C_Validator|whatsapp") { set $prerender 1; } if ($args...
## 运行时性能优化 13 条规则 ### 1. 减少重绘重排 **浏览器渲染过程** 1. 解析HTML生成DOM树。 2. 解析CSS生成CSSOM规则树。 3. 将DOM树与CSSOM规则树合并在一起生成渲染树。 4. 遍历渲染树开始布局,计算每个节点的位置大小信息。 5. 调用 GPU 绘制,合成图层。 6. 将渲染树每个节点绘制到屏幕。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/5647d9ad4ad5a57178919deae5175b83.png) **重排** 当改变 DOM 元素位置或大小时,会导致浏览器重新生成渲染树,这个过程叫重排。 **重绘** 当重新生成渲染树后,就要将渲染树每个节点绘制到屏幕,这个过程叫重绘。不是所有的动作都会导致重排,例如改变字体颜色,只会导致重绘。记住,重排会导致重绘,重绘不会导致重排 。...
## jest 报 SyntaxError: Unexpected token 'export' 错误 当项目中项目中导入第三方模块(node_modules)是esm时,会报SyntaxError: Unexpected token 'export'错误。 默认情况下,Jest 不会转换 node_modules,因为一般来说 node_modules 中的js是被转换为cjs兼容的。 所以要解决这个问题需要配置 jest,可以在package.json中进行配置 ``` { "name": "test-demo", "jest": { "transformIgnorePatterns": [ "node_modules/(?!(package-name1|package-name2))" ] }...
transform
## 相关资源 https://juejin.cn/post/7086704811927666719/#heading-7 https://juejin.cn/post/7084526003548061703 https://mp.weixin.qq.com/s/pgdcDNjDGPgNq76Zh_dZxg