本文介绍 Token 认证和 HMAC 认证两种方式。
一、Token 接口认证方式
原理:
客户端使用账号密码等信息登录,服务器验证通过后生成一个 Token 发送给客户端。客户端在后续的请求中携带这个 Token,服务器通过验证 Token 来确认用户的身份和权限。
应用场景:移动应用、Web 应用(特别是 SPA)
优点:
无状态性,即服务器不需要存储用户的会话信息。
易于实现跨域认证。
缺点:
Token 可能被窃取,应使用 HTTPS、不暴露在 URL 中、使用 HttpOnly 的 Cookie、对 Session ID 进行验证、设置合理过期时间、对 Token 进行加密等措施加强防范。
二、HMAC 接口认证方式
原理:
客户端将消息M与密钥K连接起来,通过哈希函数计算得到 HMAC 值,发送给服务器。服务器收到请求后,使用相同的密钥和请求参数重新计算 HMAC 值,如果与客户端发送的签名一致,即是合法请求。
优点:
安全性较高,攻击者很难伪造 HMAC 值,截获并篡改数据也无法通过服务端验证。
计算效率较高,哈希函数(如 MD5、SHA-1、SHA-256 等)计算效率比较高。
缺点:
密钥的更新和管理比较麻烦。
扩展:
在消息体中添加时间戳以防止重放攻击。
加密隐私数据:可以使用对称加密算法(如 AES)或非对称加密算法(如 RSA、ECC 等)对部分隐私数据进行加密。非对称算法虽然更安全,但速度较慢,如需加密大量数据,可以考虑使用对称加密算法进行加密,然后使用非对称加密算法对对称密钥进行加密。
以下列出本人所遇到的情况及处理方法,肯定不全,但都有用。
使用系统自带清理工具进行清理
Windows 7 / 8 / 8.1 / 10:在 C 盘上点击右键属性 - 磁盘清理 - 清理系统文件 - 视情况勾选 - 确定
Windows 11:在 C 盘上点击右键属性 - 详细信息 - 临时文件 - 视情况勾选 - 确定
关闭“传递优化”
设置 - Windowx 更新 - 高级选项 - 传递优化,关闭“允许从其他设备下载”
其实前面说到的清理临时文件中已经包含了“传递优化文件”,所以这里按个人喜好选择是否关闭。
更改虚拟内存路径
可以将虚拟内存路径更改为非系统盘,但建议是固态硬盘。
关闭系统还原
当遇到系统问题时,如果你喜欢重装系统,而不是系统还原,那么可以关闭它。
更改桌面、文档、下载等用户文件夹的位置
将这些目录路径更改到非系统,但仍然建议是固态硬盘。以 Windows 11 的桌面目录为例:
打开资源管理器 - 主文件夹,右键点击“桌面”属性,切换到“位置”,移动。
将软件安装到其它盘
有些电脑管理软件有软件迁移功能,但我还是建议先卸载软件,再安装到其它盘符。
将软件文档路径更改到其它盘
如果不想把软件安装到其它盘(譬如只有C盘是固态硬盘),那么可以将文档路径更改到其它盘,譬如:
微信:☰ - 设置 - 文件管理 - 更改
QQ:☰ - 设置 - 存储管理 - 更改存储路径(注意是聊天消息那个)
企业微信:头像 - 设置 - 存储管理
钉钉:头像 - 设置与隐私 - 通用 - 缓存目录
千牛:设置 - 数据存储文件夹
清理浏览器缓存
Chrome:┇ - 设置 - 隐私与安全 - 删除浏览数据
Edge:… - 设置 - 隐私、搜索和服务 - 删除浏览记录 - 选择要清除的内容
Firefox:☰ - 设置 - 隐私与安全 - 历史记录 - 清除历史记录
VMware 虚拟机
在已安装的镜像上点击右键 - 管理 - 清理磁盘
把已安装的镜像复制到其它磁盘,再添加到 VMware 中,删除原镜像文件。
更改 Navicat 数据库备份目录
如果你的 Navicat 启用了自动运行的备份任务,那么可以更改备份路径。
在连接上点击右键编辑连接,切换到高级,更改设置位置。
SQL Server 数据库文件瘦身
若 SQL Server 数据目录(C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA)中有很多较大的数据库日志文件(.ldf),可以按需采取以下措施:
使用 SSMS 连接到你的 SQL Server 实例;数据库恢复模式设置为“简单”;右键点击要压缩的数据库,选择“任务”->“收缩”->“文件”,选择“日志”,在“释放未使用的空间前重新组织页”一项中设置为 0MB,然后点击“确定”按钮。
最后推荐一款免费软件 TreeSize Free,可以查看磁盘中各目录和文件占用空间大小,小白不要乱删文件哦,删错了可就得重装系统了。
http {
...
lua_shared_dict cpu_cache 1m; # 定义共享字典用于缓存 CPU 使用率
access_by_lua_block {
local cpu_cache = ngx.shared.cpu_cache
local cache_time = cpu_cache:get("cache_time") or 0
local current_time = ngx.now()
if current_time - cache_time > 5 then -- 每 5 秒更新一次
local cpu_info = io.popen("top -bn1 | grep 'Cpu(s)'"):read("*all")
local cpu_usage = cpu_info:match("(%d+%.%d+) id") -- 获取空闲 CPU 百分比
local cpu_used = 100 - tonumber(cpu_usage) -- 计算使用率
cpu_cache:set("cpu_usage", cpu_used)
cpu_cache:set("cache_time", current_time)
end
local cpu_usage = cpu_cache:get("cpu_usage")
ngx.log(ngx.INFO, "CPU 使用率: " .. cpu_usage .. "%")
-- 将 cpu_usage 发送到远程鉴权接口,可根据服务器压力来决定是否拒绝一些不重要的请求
}
}
代码解析:
共享字典:使用 lua_shared_dict 定义一个共享字典 cpu_cache,用于存储 CPU 使用率和缓存时间。
获取 CPU 使用率:在 access_by_lua_block 中,检查缓存时间,如果超过 5 秒,则重新获取 CPU 使用率,并更新共享字典。
记录日志:使用 ngx.log 将 CPU 使用率记录到 Nginx 日志中。
注意事项:
确保 Nginx 配置中已经加载了 Lua 模块(如 ngx_http_lua_module)。
根据实际需求调整缓存时间,以平衡性能和数据的实时性。
尝试过使用 ifconfig 或 ip 命令获取网卡流量,在宝塔面板中失败了,怀疑是权限问题,有空再研究。临时方案是鉴权接口定时调用宝塔面板 API 或阿里云控制台 API 来获取 ECS 的 CPU 和带宽使用率。
* 本文信息仅供参考,以设备最新产品说明为准!
网关 | 型号 | 角色 | 蓝牙 | 蓝牙 Mesh | Zigbee | Wi-Fi | 端口 | 其它 |
小米中枢网关 | ZSWG01CM | 中枢网关 | 支持 100 个 | 支持 200 个 | 不支持 | 2.4G / 5G | 网口 | 四核,4G存储 |
小米路由器 BE6500 Pro | DR08 | 中枢网关 | 支持 | 支持 | 不支持 | 2.4G / 5G | 4个 | Wi-Fi 7 路由器,四核1G |
小米多模网关 | ZNDMWG03LM | 从网关 | 支持 100 个 | 支持 100 个 | Zigbee 3.0 支持 32 个(中继 128 个) | 2.4G | 无 | 支持 HomeKit |
小米多模网关2 | DMWG03LM | 从网关 | 支持 100 个 | 支持 100 个 | Zigbee 3.0 支持 32 个(中继 128 个) | 2.4G / 5G | 网口 | 双核128M |
绿米 Aqara 网关M1S | ZHWG15LM | 从网关 | 不支持 | 不支持 | Zigbee 3.0 支持 32 个(中继 128 个) | 2.4G | 无 | 支持 HomeKit 支持夜灯、报警 |
绿米 Aqara 网关M1S 2022款(第二代) | ZHWG20LM | 从网关 | 不支持 | 不支持 | Zigbee 3.0 支持 32 个(中继 127 个) | 2.4G | 无 | 双核64M 还支持 matter、Apple Home 支持夜灯、报警 |
绿米 Aqara 网关 M2 2022款 | ZHWG19LM | - | 不支持 | 不支持 | Zigbee 3.0 | 2.4G | 网口 | 不支持米家 App 支持红外 |
绿米 Aqara 方舟智慧中枢 M3 | ZHWG24LM | 中枢网关 | 支持Aqara设备 | 支持 | 2.4G / 5G | 不支持米家 App,支持 Aqara Home app、Apple Home、matter,支持红外,8G存储 | ||
易来 Yeelight 网关(mesh 版) | YLWG01YL白色 | 盲网关 | 支持 | 支持 | 不支持 | 2.4G | 网口 | 支持 HomeKit |
易来 Yeelight Pro S20 蓝牙 Mesh 网关 | YLWG01YL灰色 | 从网关 | 支持 | 支持 | 不支持 | 2.4G | 支持 Yeelight Pro 和 HomeKit 3 未原生接入米家,但可通过“其它平台”接入米家 | |
青萍蓝牙网关 | CGSPR1 | 盲网关 | 支持 | 不支持 | 不支持 | 2.4G | 无 | |
小米智能家庭面板 | XMZHP01LM | 从网关 | 支持 100 个 | 支持 100 个 | 不支持 | 2.4G / 5G | 无 | 86型墙壁开关 |
-> 查看目前可以做中枢和从网关的产品,中枢网关 / 从网关
[DS218+] DS218plus 上每秒接收的日志数超出 10 的容差值
DS218plus 每秒接收 55 个日志,这超出了每秒 10 个日志的容差值。请前往日志中心查看详细信息。
来自 DS218plus
打开群晖日志中心,左侧切换到“日志”选项卡,列表上方有“常规”、“连接”、“文件传输”、“硬盘”四个日志分类。
我的情况是“文件传输”中有大量日志,是因为我的小米摄像头设置的是把录制的视频保存到NAS中,而且是始终录制,而不是录制移动画面。这样就会产生多个视频文件,当自动清理一年前的视频时会出现同一秒处理了超过指定数量的文件,群晖就会发送这个通知。
解决的方法很简单:
方法一:米家 - 摄像头 - ...(右上角的设置) - 存储设置 - 存储卡状态 - 录制模式 改为录制移动画面。
方法二:群晖 - 日志中心 - 通知 - 修改“每秒日志数超出”。
以下是使用定时器每秒钟请求服务器,并在后一个请求的响应比前一个请求的响应先到达客户端时抛弃前一个请求的响应的代码:
(以 $.post 为例,$.ajax 同理)
let previousXHR = null; // 存储前一个请求的 jqXHR 对象
function sendRequest() {
// 取消前一个请求
if (previousXHR) {
previousXHR.abort();
}
// 发送新的请求
const currentXHR = $.post(url, data, function(response) {
// 请求成功的回调函数
console.log(response);
});
// 更新前一个请求的 jqXHR 对象
previousXHR = currentXHR;
}
// 每秒钟发送请求
setInterval(sendRequest, 1000);
如果你用 axios,请参此文。
2023.5 注:可以试试在“Synology Drive 管理控制台”中删除日志,我尚未尝试,如果有效就不需要看下面的内容了。
以下是 ChatGPT 的回答:
/volume1/@synologydrive/@sync/repo/ 是 Synology NAS 系统中 Synology Drive Client 同步文件夹的本地存储路径,用于存放从云端同步下来的文件。这个目录下的文件和文件夹的占用空间大小与您在云端存储的数据量有关。当您在 Synology Drive 中创建文件夹并将文件同步到本地时,这些文件会被存储在 /volume1/@synologydrive/@sync/repo/ 目录下。
如果您发现这个目录占用空间很大,可能是因为同步的文件夹中包含了大量的文件或者文件夹,或者存在某些文件大小比较大的情况。您可以通过以下方式来清理这个目录的空间:
删除不需要的文件或文件夹。如果您发现同步的文件夹中包含了不需要的文件或文件夹,可以手动删除这些文件或文件夹来释放空间。
调整同步设置。您可以在 Synology Drive Client 中调整同步设置,例如只同步某些文件夹或文件类型,或者调整同步频率等,以减少同步的数据量。
关闭同步功能。如果您不再需要某个文件夹的同步功能,可以在 Synology Drive Client 中关闭该文件夹的同步功能,以停止该文件夹的同步并释放空间。
清理同步缓存。Synology Drive Client 会在本地缓存一些同步的文件,以提高访问速度。您可以在 Synology Drive Client 中清理同步缓存,以释放空间。
需要注意的是,如果您在 Synology Drive 中删除了某个文件夹,该文件夹的同步数据并不会自动删除。如果您需要彻底清理同步数据,可以手动删除 /volume1/@synologydrive/@sync/repo/ 目录下与该文件夹相关的文件和文件夹。
于是我听从了 ChatGPT 的指引,执行了命令:rm -rf repo
手动删除文件后发现备份速度变慢了,在 NAS 中卸载并重新安装 Synology Drive Server 恢复正常(客户端需要删除并重建任务)。
经常有人碰到这样一种情况,我的 918+ 有 4 个硬盘呢,怎么空间很快就没了,最重要的是,自己查看统计了所有文件占用情况,和实际的占用空间不符。这个首先可以肯定的就是空间必然是文件占用了。但是呢,有些文件是不能从 File Station 里面直接看到的,所以很多用户就搞不懂了,有时候文件删除了,空间也不见增加。今天,就来教大家一个大招,让这些不能直接看到的文件无处遁形。
一、SSH 登陆群晖
这里我们要用到一个叫 putty 的软件
putty下载链接:点此下载
在开始之前,我们要开启群晖的 SSH 或是 telnet 服务功能(控制台 - 终端机和 SNMP - 勾选启动 SSH 功能)。
打开 putty,在主机名称输入群晖的局域网 IP 地址,然后点击下面的【打开】。
会弹出一个黑色的窗口。登入账号输入管理员:admin,按回车,然后输入 admin 的密码,要注意的是,输入密码的时候,光标是不会动的,你尽管输就行。有些用户看到代码就头疼,其实我们用到的都是些非常简单基础的命令代码,你只要照着这个步骤一步一步去做,肯定能成功,成功把空间腾出来后,你会很有成就感,哈哈!
切换到 root 权限,输入 sudo -i,按回车,然后也是输入 admin 的密码。
MAC 电脑用终端也可以登录 :
打开终端
输入命令:ssh -p 999 admin@192.168.1.9
上面 999 为自定义端口号,admin 为自己的用户名
二、查询文件
到这里我们就登陆到群晖里面了,在这里可以执行命令。
输入 cd /volume1 命令后按回车,意思是进入存储空间 1(若您的储存空间为 2,则改成 volume2,依此类推)。
输入 du -ah --max-depth=1,可以查看当前目录文件大小,这个过程可能会需要数分钟到数小时不等,依您的文件数及空间大小而定。实测 8TB 机械硬盘耗时两个多小时。
三、删除文件
像上面图片中的 @download 就是 Download Station 的缓存文件,有时候操作不当,会造成缓存不能自动删除,这个时候就需要使用代码的方法来删除缓存,才能释放存储空间了。
比如要删除 Download Station 的缓存文件夹,就是上图的 @download 文件夹,可以使用下面这个命令:rm -rf /volume1/@download
这个命令要慎用,一旦删除就不能恢复了!
四、还有哪些文件占用存储空间而不能直接查询
除了 Download Station的缓存文件之外,还有 File Station 里面删除了文件,但启用了回收站,文件实际上还没彻底删除,也会造成删除文件,空间没有增加的情况。这个时候清空一下回收站即可。
清除某个文件夹回收站:
也可以直接一次性清空所有文件夹的回收站:
还有 Drive 的版本控制和 Drive本身自带的回收站;
@synologydrive/@sync/repo 是 Synology Drive Client 的缓存目录,我删除这个目录就释放了 5TB 的空间。
除此之外,还有 Cloud Station 保留的版本,Snapshot Replication 套件生成的快照文件等。
如果发现 /volume1/@synologydrive/@sync/repo/ 这个目录占用空间过大,请参考这篇文章。
群晖系统暂时没有类似 TreeSize 的磁盘文件管理工具,但是我们可以用磁盘映射的方式将群晖系统上的目录挂载到电脑上。这样,在电脑上就可以用 TreeSize 扫描群晖上的磁盘文件了。具体步骤如下:
一、群晖上安装 WebDAV Server
二、启用 WebDAV Server
三、新建群晖用户
千万要设置好权限。
切换到“应用程序”选项卡,关闭除 WebDAV Server 以外的所有应用程序
切换到“权限”选项卡,勾选需要访问的目录
四、在电脑上安装 RaiDrive
从官网下载,免费版即可。
五、配置 RaiDrive
打开 RaiDrive,点击顶部的“添加”,选择“NAS”,选择“Synology”,并填相应的地址和账户
技巧:将群晖提供的外部访问地址(在 控制面板-外部访问 中查看)直接在浏览器上打开,如果与群晖在同一局域网,那么会跳转到 https://[IP].[QuickConnect ID].direct.quickconnect.cn:5001/,那么参照这个地址填入到 RaiDrive 中即可在局域网中连接;如果不在同一局域网,那么会跳转到公网地址,同样可以将公网地址填入,但必须在路由器上映射端口才能在外网映射磁盘到 NAS。
六、访问文件
一切顺利,你就可以在“此电脑”中看到新建的盘符,像访问本地磁盘一样访问群晖文件。
LigerShark.WebOptimizer.Core | BuildBundlerMinifier | |
特点 | 在运行时捆绑和缩小 CSS 和 JavaScript 文件 具有完整的服务器端和客户端缓存,以确保高性能 可禁用缩小 支持使用通配模式 标记帮助程序与缓存破坏 支持内联 支持 SCSS | 将 CSS、JavaScript 或 HTML 文件捆绑到单个输出文件中 保存源文件会自动触发重新捆绑 支持通配模式 支持 CI 方案的 MSBuild 支持 缩小单个或捆绑的 CSS、JavaScript 和 HTML 文件 每种语言的缩小选项是可定制的 打开生成的文件时显示水印 任务运行程序资源管理器集成 命令行支持 快捷更新解决方案中所有捆绑包 禁止生成输出文件 转换为 Gulp |
注入(Program.cs) | services.AddWebOptimizer(); app.UseWebOptimizer(); | |
指定捆绑的项目 | 在运行时自动缩小 css 和 js,也可以在 AddWebOptimizer 中自定义。默认情况下,生成的文件不会保存到磁盘,而是保存在缓存中。 | 手动编辑 bundleconfig.json 文件来指定需要合并和缩小的文件 |
功能配置 |
| 在 bundleconfig.json 捆绑时设置
|
热重载(在开发模式中保存文件自动更新浏览器效果) | VS 安装扩展,方法:菜单 - 扩展 - 管理扩展 - 联机 搜索“Bundler & Minifier” | |
其它资料 | ASP.NET 官方文档 |