Download 如何避免偶尔的损坏下载

Download 如何避免偶尔的损坏下载,download,corrupt,Download,Corrupt,我的网站上有一个msi文件,用户需要下载。这个文件没有什么特别之处。它位于Web服务器上的一个目录中,有一个指向它的常规HREF,用户可以单击它。有时,用户会抱怨无法打开msi文件,因为Windows Installer声称该文件已损坏。重新下载文件没有帮助。最后,我将文件作为附件发送出去,这通常是有效的 我的猜测是,该文件要么在用户的浏览器缓存中损坏,要么在用户经过的中间代理缓存中损坏 为什么会发生这种情况?是否有一种技术/最佳实践可以最大限度地减少文件损坏的可能性,或者,如果文件在下载过程中

我的网站上有一个msi文件,用户需要下载。这个文件没有什么特别之处。它位于Web服务器上的一个目录中,有一个指向它的常规HREF,用户可以单击它。有时,用户会抱怨无法打开msi文件,因为Windows Installer声称该文件已损坏。重新下载文件没有帮助。最后,我将文件作为附件发送出去,这通常是有效的

我的猜测是,该文件要么在用户的浏览器缓存中损坏,要么在用户经过的中间代理缓存中损坏


为什么会发生这种情况?是否有一种技术/最佳实践可以最大限度地减少文件损坏的可能性,或者,如果文件在下载过程中确实损坏了,也许可以确保用户获得一份新的文件副本?

我的建议是:

  • 建议用户避免IE(尤其是旧版本),因为下载被截断,缓存污染
  • 建议用户在重新下载文件之前清除缓存
  • 将文件托管在FTP而不是HTTP上
  • 为用户提供MD5校验和以验证下载

  • 如果原因真的只是缓存,那么我想你可以在让他们再次下载之前重命名文件。这也适用于任何代理


    编辑:此外,我相信大多数浏览器不会缓存页面,除非Get和Post参数保持不变。一般来说,这可能适用于任何URL。尝试在每次下载的URL末尾添加唯一的get(或post)参数。您可以使用当前时间或随机数等。您可以使用一个按钮,而不是超链接,单击该按钮时,该按钮会将带有唯一参数的表单提交到下载URL。

    最终用户非常缺乏经验,理想情况下,我不想对他们使用的工具施加任何限制,也不想要求他们清除缓存。很抱歉,重新提出一个旧问题,但我面临着同样的问题。我喜欢MD5校验和的想法,但我们的用户不是技术人员——有没有一种简单、简单的方法让他们在下载后检查MD5?这需要我手动更改名称或有两个指向该文件的链接,我宁愿不这样做(尽管看起来我可能没有选择)。我注意到一些网站要求你在下载开始前向服务器发布一些数据。例如,大多数Microsoft下载要求您单击“提交”类型按钮以开始下载。知道为什么吗?我还没有验证你的理论,虽然我认为你可能是对的。只是想在这里发布我的最终解决方案,它完全解决了我的问题。我把我所有的下载都换成了https。我猜这是因为中间服务器不能缓存安全内容。这不是一个适合所有人的解决方案,需要更多的cpu资源,但与我每周节省的支持时间相比,这算不了什么。