论构建Web应用程序以存储和提供内容以及何时使用第三方服务的重要性。
在过去几年中,与计算能力相比,存储已经变得非常便宜。您可能会想知道,这与网络应用有什么关系?那么,如果您考虑为一个小型三层Web应用程序使用单个Web服务器和数据库服务器,这可能无关紧要,但通过扩展,存储和提供内容的方式直接影响到实现所需的性能涉及的成本最低。
让我们深入了解细节以了解构建Web应用程序以存储和提供内容的重要性。
当涉及到从Web应用程序提供的内容时,这些内容可以分为两部分,分别称为静态内容和动态内容。静态内容主要涉及HTML,JavaScript,CSS,图像,视频和文件等内容。相反,很难确定动态内容的确切类型,但大多数这些应用程序数据是以动态内容的形式存在的,这些数据通常保存在数据库中。了解一些静态内容可能也会作为动态内容,这取决于具体的应用程序要求,这一点很重要。
传统的三层Web应用程序
传统上,在三层应用程序中,我们习惯于将所有内容存储在Web服务器和数据库服务器中。
我看到许多应用程序在Web服务器上存储静态内容,如HTML,JavaScript,Web应用程序图像和CSS。这很好,因为这些文件一旦发生新的部署就会改变。但是,不建议将从应用程序上传的文件,图像和视频存储在Web服务器中,因为它极大地限制了应用程序的水平扩展能力,并增加了Web服务器的文件I / O和存储消耗。使用第三方托管服务或 网络附加存储来存储静态内容可能有助于解决这些问题。
同样,不建议 在Web服务器上执行计算量大和内存密集的操作,如图像处理或 转码视频。这些操作是高度资源密集型的,可能会影响网络服务器常见的大规模性能瓶颈操作。
您可能想知道使用第三方服务,CDN等是否有助于降低成本并提高Web应用程序的可靠性,性能和效率。只看内容存储不会告诉你整个图像。
减少计算需求
在Web应用程序的静态内容和动态内容之间找到适当的平衡是一个持续的争论。正如我们所讨论的,由于存储更便宜,因此有技术可以最大限度地减少Web服务器的计算需求。
例如,您可以 使用JavaScript在客户端执行 图像操作,并将图像上传到Web服务器,文件存储服务器或甚至第三方托管服务。
这是单页应用程序在客户端而不是Web服务器上呈现HTML时越来越流行的原因之一。
在开发Web应用程序时,还可以识别需要高处理能力和时间进行计算或查询的数据,这些数据可以存储为直接访问,而不是每次计算或运行复杂查询。
提供Web App内容
在提供静态内容和动态内容时,缓存要求不同。例如,可以通过内容交付网络(CDN)轻松地提供静态内容, 而动态内容则需要在应用程序级别或数据库级别大规模部署第三方缓存解决方案。另外,动态内容大部分通过Web服务器提供,但对于静态内容,它不是强制性的。
使用Amazon S3,Azure Blob,Cloudinary等第三方托管服务时,可以直接或通过CDN对应方存储和提供文件。
这是如何影响总体拥有成本的
当我们考虑使用Web服务器来处理静态和动态内容时,我们选择的硬件是克服限制(可以是处理,内存,存储和吞吐量)的重要因素。在规模上,这将增加成本,因为我们必须横向扩展这些服务器以处理增加的容量。另外,由于在全球范围内实施数据中心的开销很大,因此为全球用户群构建内容分发网络相当昂贵。最重要的是,实施可靠性将进一步增加更大规模相关的成本和复杂性。
因此,识别静态和动态内容,存储和交付需求并使用适当的第三方托管服务(或所需的分布式存储和交付实施)并设计Web应用程序非常重要。
结论
让我们回顾一下使用第三方服务,CDN等是否可以帮助降低成本并提高可靠性,性能和效率的问题,而不是扩大同时处理静态和动态内容的单个Web服务器。
总的来说,很难说它是否真的会降低网络应用程序的成本,因为它依赖于正在使用的特定第三方服务。然而,使用这些托管服务可能会提高网络应用程序的可靠性,性能和效率,而与具有竞争力的总体拥有成本的单个Web服务器的扩展性相比。
领取专属 10元无门槛券
私享最新 技术干货