月度归档:2023年04月

Vue监听store中数据变化的两种方式


2023年4月09日 21:58:01   2,530 次浏览

方式一

在Vue中,我们可以使用watch选项来监听数据的变化。下面是一种监听$store.state.userInfo.Name的变化的方式:

watch: {
  "$store.state.userInfo.Name":{
    handler:function(newVal,oldVal){
      console.log(newVal,oldVal);
    }
  }
}

 

#方式二

computed: {
  isEdit () {
    return this.$store.state.userInfo.Name;  //需要监听的数据
  }
},
watch: {
  isEdit(newVal, oldVal) {
    console.log(newVal,oldVal);
  }
}

 

#区别

::: info 区别一:第二种方式是先通过计算属性时刻监测store的数据变化,从而触发isEdit的监听函数,明显需要多一步 区别二:如果监听store的数据是一个对象,第一种方式只需要加上深度监听,也可以实现数据的变化监听,而第二种方式却无法监听到store的对象数据变化 :::

#例如

#第一种方式

watch: {
  //此时我监听的是对象,当$store.state.userInfo.Name发生修改时,此时需要深度监听才能监听到数据变化
  "$store.state.userInfo":{
    deep:true,//深度监听设置为 true
    handler:function(newVal,oldVal){
      console.log("数据发生变化啦"); //修改数据时,能看到输出结果
      console.log(newVal,oldVal);
    }
  }
}

 

#第二种方式

computed: {
  isEdit () {
    return this.$store.state.userInfo;  //需要监听的数据
  },
},
watch: {
  isEdit(newVal, oldVal) {
    console.log("数据发生变化啦"); //修改数据时,看不到该输出结果,因为无法监听到数据的变化
    console.log(newVal,oldVal);
  }
}

 

使用KCPTun中转加速境外服务器&多种方案


2023年4月05日 21:03:23   1,450 次浏览

前段时间研究了下多台中转服务器加速境外 SS 服务器方案,用的是 KCP 加速,当然没啥要求也可以用 iptables 端口转发,需要注意的是 kcptun 只支持单端口加速,如果需要加速多个端口,需要新建多条规则,KCP 还可以和 BBR 共同使用。

kcptun 简介

kcptun 是一个非常简单和快速的,基于 KCP 协议的 UDP 隧道,它可以将 TCP 流转换为 KCP + UDP 流。而 KCP 是一个快速可靠协议,能用比 TCP 浪费 10%-20% 的带宽的代价,换取平均延迟降低 30%-40%,延迟最大能能降低三倍。由于 kcptun 使用 Go 语言编写,内存占用低(能在 64M 内存服务器上稳定运行),而且适用于所有平台,包括 ARM 平台。

项目地址:
KCP协议
kcptun

kcptun 安装

注意服务端和客户端的版本最好一致,如果不一致可以去 kcptun 的项目地址中下载对应你系统的最新版。

服务端

  1. 这里采用一键脚本部署,SSH 连接服务器执行以下命令,CentOS 系统需要关闭防火墙或者放行相应端口
# CentOS 7+ / Debian 8+ / Ubuntu 16+
wget --no-check-certificate https://github.com/kuoruan/shell-scripts/raw/master/kcptun/kcptun.sh
chmod +x ./kcptun.sh
./kcptun.sh
  1. 上面的命令运行后,会有一系列参数设置项供选择,大部分回车选择默认即可,少部分需要自己设置,具体如下
  • 端口:默认是 29900,kcptun 客户端连接服务端使用的端口,可以保持默认,添加多条规则时需要修改
  • 加速的地址:默认为本机 127.0.0.1,加速其他服务器,需要填写其公网IP
  • 加速的端口:需要加速的端口,例如 Shadowsocks 服务端口
  • 密码:自己设置,不要使用默认密码,由于 kcptun 客户端连接
  • 加密方式选择:建议默认 aes,较强的加密方式会影响网速
  • 加速模式:默认 fast 即可,越快越浪费带宽
  • MTU:默认 1350 即可
  • sndwnd:发送窗口大小,与服务器的上传带宽大小有关,这项与 rcvwnd 的比例会影响加速效果,可以暂时设置为默认的512,不要大于你的本地宽带
  • rcvwnd:接收窗口大小,与服务器的下载带宽大小有关,可以暂设置为默认的 512 或 1024,不要大于你的本地宽带
  • 数据压缩:y,关闭数据压缩,可以一定程度上提升传输效率
  • 其他参数保持默认即可……
  1. 常用功能及命令
supervisorctl start kcptun  # 启动
supervisorctl stop kcptun  # 停止
supervisorctl restart kcptun  # 重启
supervisorctl status kcptun  # 状态
./kcptun.sh uninstall  # 卸载

客户端

这里只例举 Windows 和 Linux 客户端,其他见 kuptun 项目
kcptun:https://github.com/xtaci/kcptun/releases/

  1. Windows 客户端
    图形界面:https://github.com/dfdragon/kcptun_gclient/releases
    Windows 32位下载:windows-386,64位下载:windows-amd64
    将下载好的 kcptun 客户端解压,拖入 kcptun_gclient 目录中,点击右上角的浏览按钮,选择 client_windows_xxx.exe 的路径,最后根据服务端生成的配置信息,填写启动即可。 
  2. Linux 客户端
    根据你的系统架构下载对应的包,这里以 amd64 CentOS 7 举例,下载我打包好的 kcpclient 客户端,将目录中的 client_linux_amd64 替换为最新的版本,编辑 client-config.json 文件,修改为你的 kcptun 服务端连接信息,赋予 .sh 和 client_linux_amd64 文件执行权限,最后执行 bash start.sh 即可,如果要添加多条规则,新建多个 client-config.json 文件然后重启 kcpclient 即可 bash restart.sh

kcpclient:https://github.com/Fog-Forest/scripts/tree/main/kcptunclient

服务器架构

比较推荐使用一台中转服务器加速,直接加速效果可能不好,两台中转服务器成本太高

两台中转服务器加速

国内服务器部署 kcptun 客户端连接香港 kcptun 服务端,香港服务器部署 kcptun 服务端以及 BBR,加速境外服务器指定端口

一台中转服务器加速

有两种方案:
1. 中转服务器和境外服务器都部署 BBR,直接使用 iptables 端口转发即可
2. 境外服务器部署 BBR 和 kcptun 服务端,中转服务器部署 kcptun客户端,连接 kcptun服务端

直接加速

境外服务器部署 BBR 和 kcptun 服务端,用户端部署 kcptun 客户端,连接 kcptun 服务端即可

总结

使用 KCP 和端口转发的加速方案,提速效果明显,能够降低延迟,但是配置较为繁琐,如果有多台境外服务器用于 SS 的话,还可以配置负载均衡。