Web applications 我是否应该要求用户上传图片或将其寄存到其他地方并提供链接?

Web applications 我是否应该要求用户上传图片或将其寄存到其他地方并提供链接?,web-applications,Web Applications,我正在开发一个应用程序,它包括允许用户在面向公众的页面上显示照片的基本功能 寻找一些观点,看看是否更好的做法是上传图像文件,还是让用户提供到其他地方已经托管的图像的链接 选择的考虑因素是什么?跳过传输和托管图像的负担,让它们托管在其他地方(如Flickr、Photobucket等)难道不是更有意义吗?这两种方法都有其含义。让用户在其他服务器上存储图像意味着您在体系结构中引入了依赖关系。如果他们选择将它们存储在一台服务器上,而当有人访问您的页面时,该服务器恰好处于关闭状态,则这些图像将不可用。但是

我正在开发一个应用程序,它包括允许用户在面向公众的页面上显示照片的基本功能

寻找一些观点,看看是否更好的做法是上传图像文件,还是让用户提供到其他地方已经托管的图像的链接


选择的考虑因素是什么?跳过传输和托管图像的负担,让它们托管在其他地方(如Flickr、Photobucket等)难道不是更有意义吗?

这两种方法都有其含义。让用户在其他服务器上存储图像意味着您在体系结构中引入了依赖关系。如果他们选择将它们存储在一台服务器上,而当有人访问您的页面时,该服务器恰好处于关闭状态,则这些图像将不可用。但是你得到的好处是不必与他们打交道

在某些情况下,引用来自其他服务器的图像可能被视为不好的做法,因为您实际上是在“窃取”托管在其他服务器上的图像的带宽。有关此问题的更多讨论,请参阅

如果不控制图像的宿主位置,则无法控制图像的浏览器缓存能力。如果托管它们,则可以设置适当的缓存头,以便在将图像用于重复页面视图时,可以在浏览器中缓存图像以获得更好的性能。本质上,如果它们不在您的服务器上,您将放弃一些控制和使用它们的能力

使用另一个源,比如Flickr,意味着您将获得大量预先开发的API。本质上,如果您将另一台服务器用作服务,那么您将获得使用服务的所有好处。但是,如果由用户选择位置,这些好处可能无法实现,因为他们可能会选择在低于标准的源上托管他们的图像


这些是需要考虑的一些事情。可能没有一个“正确”的答案——但这两种方法都会有取舍。

如果您有足够的空间,出于许多原因,我更愿意主持这些图像:

  • 您可以控制站点发送的内容
  • 如果您的站点处于打开状态,则图像将显示,并且您不需要依赖某些可能不清晰的服务器来显示图像
  • 您不需要用户拥有另一个站点来存储其图像
  • 许多人不知道如何提供他们的图片链接

我只会提到缺点,因为优点是显而易见的

上传到其他地方

  • 对图像没有直接控制(有些图像可能会因滥用等原因被删除)
  • 版权问题
  • API可能会更改,站点可能会关闭,URL模式可能会更改
  • 政策可能会改变
自托管Cons

  • 需要大量资源
  • 需要建立缓和团队(以确保他们不会滥用权力)
  • 可能是某些XSS攻击的目标,因此存在额外的安全问题

综上所述,自我托管是一个更好的选择

可能值得注意的是,Stackoverflow使用imgur.com托管图片,这些图片附在不是链接的帖子上,效果也不太好,但确实有前面提到的缺点

此外,还有两个前面没有提到的问题

  • 尽管如此,imgur.com可能不会被某些组织阻止。例如,当我在工作时,我在SO帖子上看不到任何图像

  • 如果你不小心你的网站代码的方式


  • 这些图像是用来做什么的?只是一张个人资料图片,还是让图片保持活力很重要?让用户在异地上传图像的风险在于图像可能会被删除。为了保证应用程序的质量,最佳做法是自己在个人服务器或付费第三方上托管图像。正如Brandon提到的,我的图片将被删除,这将反映在你的应用程序上。