如何实现限制某个文件单 IP 一小时只能下载 3 次?

2022-12-22 13:46:05 +08:00
 edis0n0

一个客户端更新原理是获取 http://example.com/latest.txt 里的数字版本号,如果大于当前版本号就后台下载 http://example.com/latest.exe ,如果下载失败就一直不停循环下载,多几个客户端循环下载服务器带宽就满了,需要实现限制这个文件单 IP 一小时只能下载 3 次,最方便的实现方法是什么?(不能用跳转,因为垃圾客户端不会追踪跳到哪里)

最好能用服务器上有的 php+Apache ,因为服务器的系统是 CentOS4.8 ,所有东西基本都要自己编译了不说,它的 uptime 快 9 年了,我很怕因为什么关机就起不来了。

不能读日志直接封 IP ,因为同域名下有很多 API ,旧版客户端也能用。

3246 次点击
所在节点    程序员
26 条回复
edis0n0
2022-12-24 00:19:08 +08:00
@jones2000 #19 先看下帖子“客户端下载失败就循环下载”,这样会产生天价账单
jones2000
2022-12-24 00:25:26 +08:00
@edis0n0 用CDN可以避免下载失败。选择就近的节点下载,成功率更高。除非客户端网络有问题,或者是升级包太大了, 如果是升级包太大,把升级包切成几个小文件,下载到本地以后再合并覆盖客户端。
jones2000
2022-12-24 00:36:09 +08:00
@edis0n0 如果是自建机房,升级服务器怎么可能是单台呢, 平时留3-4台做一个负载均衡,, 每次要上新版本是根据目前现在的客户量大致就可以算出高峰流量,提前调配好升级服务器和提升带宽,等升级高峰期过了,把多余的升级服务器下线,带宽就可以缩小。这些都是运维一个产品的基本的操作。
edis0n0
2022-12-24 00:37:05 +08:00
@jones2000 #21 客户端是屎山,盘满了、杀毒软件在扫描升级文件导致升级程序无法运行等一堆情况都会导致升级失败,用 CDN100%账单 6 位数
edis0n0
2022-12-24 00:37:39 +08:00
@jones2000 #22 非互联网企业,客户端 10 年前随便找的外包公司做的
jones2000
2022-12-24 00:48:32 +08:00
@edis0n0
1. 盘满了 客户端判断下,出一个提示框,然后程序退出,避免再满盘的情况下运行异常,给客户带来损失
2. 杀毒软件,升级产品的时候把你的程序给个个杀毒软件都过审,只要过审了,就不会栏你了。
3.上传升级失败异常信息, 如果升级失败了,上传日志给后台,可以方便开发分析。

“客户端是屎山” 代码不行就重构,就改,天天说屎山,它是不会消失的, 只有一点一点改,最后这个屎山才能消失。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/904109

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX