在实际使用中发现, 等待时间经常有超过10秒以上的情况,接口响应慢,取决于服务器的硬件和软件配置、网络带宽、缓存机制、请求处理逻辑等
排查发现并不是只有4个接口慢,而是当有大量请求或者高并发的请求时,服务器所有请求响应都变慢了, 正常情况下,静态资源的响应时间很快,不会占用服务器的资源,当在服务器CPU 占用过高, 或者网络带宽不足的时候,就会造成接口的响应缓慢。
如果是 Node.js 单线程、单核运行的情况下,一旦阻塞,就会造成宕机。由于使用的是是HTTP1.1 ,在 chrome 下并发请求 6个。排查发现由于使用了 require JS, 使用后会进行自动拆包,会将 js 大于1M 都会拆包
location /itsm/static { add_header Cache-Control "max-age=2592000, s-maxage=3600";
}
因为requirejs和splitChunks会造成很多的js请求,而chrome在http1.1只能并发6个请求,因此对于产品,我们可以不用 requirejs 和 splitChunks。去除 requirejs 插件, 因此在打包产品包的时候可以不使用插件。
如果没有办法移除, 我们可以使用 system js 来代替 requirejs 来加载。SystemJS 诞生于 2015 年,那个时候 ES Module 还未成为标准,在浏览器端只能通过 requirejs、seajs 等方案实现模块加载,随着 npm 在前端界的流行,一个项目中可能存在多种模块规范。SystemJS 是现阶段下(浏览器尚未完全正式支持importMap)原生 ES Module 的替代品,ES Module 被编译成 System.register 格式之后能够跑在旧版本的浏览器当中。
关于http和http2以及QUIC协议的简介和之间的区别
server {listen 443;server_name 你网站的域名;ssl on;root html;index index.html index.htm;ssl_certificate cert/你的证书文件名.pem;ssl_certificate_key cert/你的证书文件名.key;ssl_session_timeout 5m;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;location / {root html;index index.html index.htm;}
}
# 建议复制多一份原配置,出错可以恢复
http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {# 监听80端口,http重定向listen 80;server_name example.com;return 301 https://www.example.com$request_uri;}server {# 监听443端口,https重定向listen 443 ssl;server_name example.com;return 301 https://www.example.com$request_uri;}server {listen 443 default_server ssl;server_name www.example.com;# 下面代码省略...
}
http缓存,浏览器缓存,cdn缓存
怎样把网站升级到http/2
网站http升级https以及cdn加速(基本无坑)
让你的网站升级到HTTP/2