代码之家  ›  专栏  ›  技术社区  ›  mwjackson

静态资源(图像)Web服务器的架构思想?

  •  0
  • mwjackson  · 技术社区  · 15 年前

    我们正在考虑删除ASP.NET 2.0 Web应用程序中的所有静态资源(主要是图像),并将它们移动到各自独立的服务器上。主要的设计要求是速度(所以缓存很重要)和最低安全级别(这样人们就不能直接下载或盗取图像)。使用一个简单的.NET 2.0 Web服务会立刻让我想到,但我担心可能的性能问题和缓存?这是一个有效的问题吗?

    那么,什么样的建筑设施适合这个法案呢?

    还有一些需要考虑的问题:

    • WCF还不是一个真正的选择,因为几个月来我们还没有迁移到.net3.5。
    • 开发时间限制为2周

    编辑-进一步阐明我们的立场:

    我真的不需要一个任务关键、超高负载、异步的RPC服务器来分发大量的数据。我所需要的是一些门面来分发请求(并利用IIS缓存),从我们的主站点获取单独Web服务器上的图像,并且能够简单地验证请求以防止基本的盗窃案例。

    3 回复  |  直到 15 年前
        1
  •  2
  •   Mike Chaliy    15 年前

    只需使用在IIS中配置为虚拟文件夹的静态文件夹。这会给你所需要的一切。缓存、速度等等。

    使用随机文件夹/文件名可以实现最小的伪安全性。或注入的管道处理程序。当然,您应该禁用文件夹列表等。

        2
  •  2
  •   ConcernedOfTunbridgeWells    15 年前

    高速静态Web服务的“山中之王”是异步I/O,至少在上一次看到它时是这样。曾经有一个叫做“宙斯”的Web服务器使用了这种体系结构。它是专门为大容量静态内容服务的——猜猜哪个行业。

    线程和同步比您想象的要贵。异步体系结构在服务器中应用非常广泛,可以使资源效率非常高。通常单个线程的运行速度如此之快,以至于它可以以相当大的幅度超过多线程服务器。

    使用AsyncCore(一个python异步服务器框架),我可以创建一个单线程的XML-RPC服务器,它可以连接到数据库,发出一个简单的查询,cose连接和响应请求的速度快于一个多线程服务器和一个线程池。在一台CPU机器上,速度大约快了2.5倍。

    滚动您自己的异步服务器并不难。我看过他们被分配为二年级计算机科学作业。您可能可以找到大多数语言的异步Web服务器库-标准库中有一个Python。

    最后,我没有太多时间让人们说“做吧,但必须在两周内完成”。如果您的业务案例只能证明两周的开发时间是合理的,那么请考虑不要费心——业务案例太边缘了,除非它真的是低挂起的水果。我机械地把一个边际商业案例翻译成完全没有商业案例。如果这很重要的话,给我时间去真正地做。如果不重要,就不要做。

    我们到了-只为您节省了两周时间和所有的日常维护费用。

        3
  •  1
  •   Mike Chaliy    15 年前

    您可以开发简单的httphandler(+mvc路由,用于用户友好的URL)。但这需要手动处理压缩、缓存头、内容部分等。

    但有了这个解决方案,您可以自由地实现任何东西,比如跟踪异常下载、正确的用户授权、图像大小调整、图像优化等。