keep-alive

Node.js http.Agent实现真正的keep-Alive代理

Deadly 提交于 2020-03-01 08:43:32
一、 Kepp-Alive使用情况 1、当你的Server内存充足时,KeepAlive =On还是Off对系统性能影响不大。 2、当你的Server上静态网页(Html、图片、Css、Js)居多时,建议打开KeepAlive 。 3、当你的Server多为动态请求(因为连接数据库,对文件系统访问较多),KeepAlive 关掉,会节省一定的内存,节省的内存正好可以作为文件系统的Cache(vmstat命令中cache一列),降低I/O压力。 PS:当KeepAlive =On时,KeepAliveTimeOut的设置其实也是一个问题,设置的过短,会导致Apache 频繁建立连接,给Cpu造成压力,设置的过长,系统中就会堆积无用的Http连接,消耗掉大量内存,具体设置多少,可以进行不断的调节,因你的网站浏览和服务器配置 而异。 二、浏览器对Keep-Alive的并发数情况及域名开销 对于HTTP/1.0来说可以充分利用浏览器默认最大并发连接数比HTTP/1.1多的好 处,实现不增加新域名的开销而更高的并行 下载 ,减少域名解释的开销(注:IE 6,7在HTTP/1.0中默认最大并发连接数为4,在HTTP/1.1中默认最大并发连接数为2,IE8都为6,Firefox2在HTTP/1.0中 默认最大并发连接数为2 在HTTP/1.1中默认最大并发连接数为8,firefox 3默认都是6

HTTP访问控制(CORS)

岁酱吖の 提交于 2020-02-27 20:26:50
当一个资源从与该资源本身所在的服务器不同的域或端口请求一个资源时,资源会发起一个 跨域 HTTP 请求 。 比如,站点 http://domain-a.com 的某 HTML 页面通过 <img> 的 src 请求 http://domain-b.com/image.jpg。网络上的许多页面都会加载来自不同域的CSS样式表,图像和脚本等资源。 出于安全考虑,浏览器会限制从脚本内发起的跨域HTTP请求。例如, XMLHttpRequest 和 Fetch 遵循 同源策略 。因此,使用 XMLHttpRequest 或 Fetch 的Web应用程序只能将HTTP请求发送到其自己的域。为了改进Web应用程序,开发人员要求浏览器厂商允许跨域请求。 (译者注: 这段描述跨域不准确, 跨域并 非 不一定是浏览器限制了发起跨站请求, 而 也可能是跨站请求可以正常发起,但是返回结果被浏览器拦截了。最好的例子是 CSRF 跨站攻击原理,请求是发送到了后端服务器无论是否跨域!注意:有些浏览器不允许从 HTTPS 的域跨域访问 HTTP,比如 Chrome 和 Firefox,这些浏览器在请求还未发出的时候就会拦截请求,这是一个特例。) 跨域资源共享( CORS )机制允许 Web 应用服务器进行跨域访问控制,从而使跨域数据传输得以安全进行。浏览器支持在 API 容器中(例如

CORS讲解

馋奶兔 提交于 2020-02-27 20:13:36
跨域资源共享( CORS ) 是一种机制,它使用额外的 HTTP 头来告诉浏览器 让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源。当一个资源从与该资源本身所在的服务器 不同的域、协议或端口 请求一个资源时,资源会发起一个 跨域 HTTP 请求 。 什么情况下需要 CORS ? XMLHttpRequest 或 Fetch 发起的跨域 HTTP 请求。 Web 字体 (CSS 中通过 @font-face 使用跨域字体资源), 因此,网站就可以发布 TrueType 字体资源,并只允许已授权网站进行跨站调用 。 WebGL 贴图 使用 drawImage 将 Images/video 画面绘制到 canvas 样式表(使用 CSSOM ) 功能概述 跨域资源共享标准新增了一组 HTTP 首部字段,允许服务器声明哪些源站通过浏览器有权限访问哪些资源。 另外,规范要求,对那些可能对服务器数据产生副作用的 HTTP 请求方法(特别是 GET 以外的 HTTP 请求,或者搭配某些 MIME 类型的 POST 请求), 浏览器必须首先使用 OPTIONS 方法发起一个预检请求(preflight request),从而获知服务端是否允许该跨域请求。 服务器确认允许之后,才发起实际的 HTTP 请求。 在预检请求的返回中

keep-alive的使用

不羁的心 提交于 2020-02-27 13:22:21
props: include - 字符串或正则表达式。只有名称匹配的组件会被缓存。 exclude - 字符串或正则表达式。任何名称匹配的组件都不会被缓存。 max - 数字。最多可以缓存多少组件实例。 用法 <keep-alive> 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。和 <transition> 相似, <keep-alive> 是一个抽象组件:它自身不会渲染一个 DOM 元素,也不会出现在父组件链中。 当组件在 <keep-alive> 内被切换,它的 activated 和 deactivated 这两个生命周期钩子函数将会被对应执行。 在 2.2.0 及其更高版本中, activated 和 deactivated 将会在 <keep-alive> 树内的所有嵌套组件中触发。 <!-- 基本 --> <keep-alive> <component :is="view"></component> </keep-alive> <!-- 多个条件判断的子组件 --> <keep-alive> <comp-a v-if="a > 1"></comp-a> <comp-b v-else></comp-b> </keep-alive> <!-- 和 `<transition>` 一起使用 --> <transition> <keep-alive>

http报文解析

五迷三道 提交于 2020-02-27 11:45:35
http报文结构 报文首部 起始行 请求报文的起始行: 方法(method) request-URL version(http协议版本) 响应报文的起始行 HTTP响应码 请求头 通用首部 请求首部 响应首部 内容首部 拓展首部 空行 报文主体(body) http请求过程 1.建立TCP连接 2.浏览器向服务器发送请求命令 3.web服务器应答 4.Web服务器关闭TCP连接 记录的比较散乱,这篇文章的思路写的很清晰,可以看这篇: http报文详解------klguang http报文结构 http报文主要包含三大部分 报文首部 空行 主体(body) http报文例子: GET / HTTP/1.1 Host: www.enjoytoday.cn Connection: keep-alive Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36 Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Referer: http:/

RESTful api 设计规范

可紊 提交于 2020-02-19 08:57:02
该仓库整理了目前比较流行的 RESTful api 设计规范,为了方便讨论规范带来的问题及争议,现把该文档托管于 Github ,欢迎大家补充!! Table of Contents RESTful API 设计规范 关于「能愿动词」的使用 Protocol API Root URL Versioning 在 URL 中嵌入版本编号 通过媒体类型来指定版本信息 Endpoints HTTP 动词 Filtering Authentication Response 200 ok 201 Created 202 Accepted 204 No Content 3xx 重定向 400 Bad Request 401 Unauthorized 403 Forbidden 404 Not Found 405 Method Not Allowd 406 Not Acceptable 408 Request Timeout 409 Gonfilct 410 Gone 413 Request Entity Too Large 414 Request-URI Too Long 415 Unsupported Media Type 429 Too Many Request 500 Internal Server Error 503 Service Unavailable 版权声明 建议参考

React - keep-alive

倖福魔咒の 提交于 2020-02-16 20:05:53
React 没有提供类似 Vue <keep-alive> 缓存页面不销毁的功能。在 Github 上,有用户提了相关的 issues: can React support feature like keep-alive in Vue? 但 React 的开发者认为新增“缓存页面”功能需要修改原有的代码,并且“缓存页面”容易造成内存溢出,他们并不推荐用户使用/依赖该功能,并给与了其他解决方法 使用 display: none; 隐藏页面 将需要“缓存”页面的数据挂载到父组件或者更顶层组件 使用 redux 使用 redux 缓存页面数据的同时,需要记录当前页面的滚动距离,在下一次挂载时,恢复滚动位置 import React, { Component } from 'react' import { connect } from 'react-redux' class Me extends Component { handleScroll = () => { const scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop // redux 记录滚动距离 this.props.dispatch({ type: 'CHANGE_Me

SpringBoot整合Redis

狂风中的少年 提交于 2020-02-10 15:44:28
Redis 非关系型数据库的代表,基于内存进行存储,支持key-value的存储形式,底层是用 C 语言来编写的。 基于key-value形式的数据字典,结构非常简单,没有数据表的概念,直接用键值对的形式完成数据的管理,Redis支持5中数据类型: 字符串 列表 集合 有序集合 哈希 SpringBoot整合Redis 实质是使用 Spring Data Redis 操作 Redis 1、搭建环境,引入依赖 <?xml version="1.0" encoding="UTF-8"?> < project xmlns = " http://maven.apache.org/POM/4.0.0 " xmlns: xsi = " http://www.w3.org/2001/XMLSchema-instance " xsi: schemaLocation = " http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd " > < modelVersion > 4.0.0 </ modelVersion > < groupId > com.qianyu </ groupId > < artifactId > demo </ artifactId > < version > 1.0

HTTP的长连接和短连接

我是研究僧i 提交于 2020-02-10 13:07:39
转载自: https://www.cnblogs.com/cswuyg/p/3653263.html 本文总结&分享网络编程中涉及的长连接、短连接概念。 关键字:Keep-Alive,并发连接数限制,TCP,HTTP 一、什么是长连接 HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。  HTTP首部的Connection: Keep-alive是HTTP1.0浏览器和服务器的实验性扩展,当前的HTTP1.1 RFC2616文档没有对它做说明,因为它所需要的功能已经默认开启,无须带着它,但是实践中可以发现,浏览器的报文请求都会带上它。如果HTTP1.1版本的HTTP请求报文不希望使用长连接,则要在HTTP请求报文首部加上Connection: close。《HTTP权威指南》提到,有部分古老的HTTP1.0 代理不理解Keep-alive,而导致长连接失效:客户端-->代理-->服务端,客户端带有Keep-alive,而代理不认识,于是将报文原封不动转给了服务端,服务端响应了Keep-alive,也被代理转发给了客户端,于是保持了“客户端-->代理”连接和“代理-->服务端”连接不关闭,但是

vue中keep-alive的使用

大城市里の小女人 提交于 2020-01-30 19:09:47
使用场景: 切换首页到其他页面,重新回到首页时,首页初始化了,在vue中页面的切换由router对象管理的,来回切换,会触发create,destroy生命周期函数,为了保持路由的状态,来回切换不会重新初始化页面,可以使用keep-alive标签进行包裹 使用keep-alive的注意事项 注意 :当使用keep-alive标签进行包裹时,页面的create,destroy生命周期函数就失效,可以使用activated(),deactivated()代替,激活和不被激活 特别的 :有些东西你不希望它缓存,可以在标签中使用exclude属性 使用 include/exclude 来实现部分组件不需要缓存, 每个组件中需要加 name 来匹配 • include:只有匹配的组件会被缓存(支持字符串或正则表达) • exclude:任何匹配的组件都不会被缓存(支持字符串或正则表达) // 只缓存 name 为 index 的组件 <keep-alive include="index"> <router-view/> </keep-alive> // 不缓存 name 为 index 的组件 <keep-alive exclude="index"> <router-view/> </keep-alive> // 只缓存 name 为 index 或 hello 的组件 <keep