首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用户上传到服务器上的垃圾文件应该怎么处理?

一、问题概述

应用上线后,用户经常往服务器上上传文件,有些文件上传之后被引用了,有些文件上传之后没被引用。

对于没有被引用的文件,就成了多余的垃圾文件。随着时间的推移,服务器上的垃圾文件越来越多,怎么办?

这样说可能有点抽象,举个具体的例子吧。

二、一个具体的业务场景

我们都发过朋友圈信息,发朋友圈信息时,上传了3张图片到服务器,上传之后又放弃发表。

当然微信的朋友圈有询问,是否保存草稿,如果选择否,就会彻底放弃这几张图片。

也就是说在点击否的时候,会通知服务器,彻底删除这几张图片。把没有引用的图片删除,也就不存在垃圾文件。

如果我们在朋友圈上传了3张图片,并没有点击回退,更没有点击保存草稿,而是在应用之外把应用划掉了。那会怎么样?

当然微信做得比较好,这种情况也把草稿保存了。

有些应用就没有这方面的处理,比如某条,再次进入的时候,刚刚填写的那条信息没了。客户端信息是没了,但是图片已经上传到服务器了,那几张图片成了没被引用的垃圾。

特别是网页端,更容易产生垃圾文件。

在网页端,上传图片,填写一半的资料,一不开心就把页面咔嚓了,那些已经上传到服务器的图片就容易成为垃圾文件,占用服务器的存储空间,给服务器端的存储造成负担。

之前一直没有考虑过这个问题,当服务器上的文件越来越多时,我们就需要把没有引用的垃圾文件清除,只留下有引用的有用文件。

那么应该怎么做呢?

三、解决方案

1、使用临时文件夹

用户把文件上传到服务器后,服务器先将文件保存到临时文件夹目录下,用户提交表单后,再将文件移动到指定的文件夹中。

另外,临时文件夹中的文件需要定期清理。

2、使用文件上传记录表

设计一张表【上传文件记录表】,用于存储上传文件的记录。

表结构:文件唯一标识、文件URL、文件被引用次数、创建时间、创建人、修改时间、修改人等字段。

用户把文件上传到服务器,服务器保存文件后,同时记录文件的上传记录,把【文件被引用次数】设置为0,未被引用。

当文件被引用时,更改这条记录的【文件被引用次数】。如果被多次引用时,就递增引用次数。

另外,定期检索【上传文件记录表】,对未被引用的文件定时清理,同时删除记录。

四、解决方案分析

第一种方案,涉及到文件的拷贝,如果文件大了、多了,都比较消耗内存。第二种方案,不需要拷贝文件,只需要更改引用次数就好,操作简单。

定时清理未被引用的文件是两个方案都需要的。

上面的两个解决方案,个人比较偏向第二种方案,实施起来更简单。

对于头像之类的可能多次上传的图片,可以采用每次上传使用相同文件名的命名方式,对文件进行覆盖,这样就不会有垃圾文件产生。

对于上面的两个方案,你有没有什么看法,还有没有其他更好的方案,欢迎一起探讨。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OEOWIClLIwBhHM68uTlOj8NA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券