战争部署的外部资源与内部资源,例如 Tomcat

发布于 2024-11-30 20:45:21 字数 243 浏览 1 评论 0原文

我有一个 Web 应用程序,当前使用外部目录在 Spring Web 应用程序中托管静态文件,例如 css、velocity。也就是说,该目录位于 tomcat 的 webapp 目录内,但不在 WAR 内。

除了能够轻松编辑这些资源而不需要重新编译包部署之外,不将这些文件包含在战争中还有什么好处。

我似乎记得很久以前就被告知 Tomcat 在提供文件静态文件方面的性能很差,但我没有任何经验来支持这一点。据我所知,唯一的优点是易于编辑。

I have a web app that current uses an external directory to host static files, e.g css, velocity, in a Spring webapp. That is, the directory is inside tomcat's webapp directory but not inside the WAR.

Other than the ability to easily edit these resources without needing to recompile-package-deploy is there any advantage to not including these files inside the war.

I seem to recall being told A LONG TIME AGO that Tomcat had poor performance in serving files static files, but I don't have any experience that backs this up. As far as I'm aware the only advantage is that of ease of editing.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梓梦 2024-12-07 20:45:21

一般来说,Web 服务器在应用程序服务器前面模式仍然有效:

  1. Web 服务器提供 TLS/SSL 终止;客户端通过 HTTPS 与您的 URL 通信,Web 服务器终止 SSL 并将纯 HTTP 消息转发到您的应用程序服务器 (tomcat)。在这种情况下,Web 服务器可以接管加密(CPU 利用率)Web 服务器造成的负载
  2. ,以提供静态内容;当涉及高流量网站或提供大量静态内容的网站时,网络服务器可以提供静态内容。想象一个提供包含高分辨率图像(例如> 1m)的产品目录的应用程序。直接从应用程序服务器下载图像需要应用程序服务器上有一个线程。它还减少了应用程序服务器节点上的网络 I/O。
  3. 网络服务器位于非军事区 (DMZ);企业部署中的常见模式。 网络服务器托管在可供公众使用的区域中,而您的应用程序服务器托管在仅供网络服务器使用的内部区域中。这引入了另一层安全性。
  4. 网络服务器提供静态缓存; Web 服务器(例如 Apache)在缓存方面表现良好。

毫无疑问,根据您的用例,它可能看起来有所不同:

  1. 如果您的 Web 服务器驻留在不同的服务器节点上,您将获得上面提供的示例的最大优势,因为它涉及计算能力(在本例中为 CPU)。
  2. 与往常一样,分布式计算在这种情况下引入了一层复杂性、部署和管理。
  3. 网络服务器应用程序服务器上建立相同的安全方法可能会变得很棘手,例如,仅允许某些用户访问某些图像。

网络服务器应用程序服务器放在同一节点上会降低提供网络服务器的优势。我的经验是,当涉及“少数用户”使用的“较小”内部应用程序时,不需要 Web 服务器,tomcat 就可以很好地服务。如果您的应用仅提供一些静态文件,例如图标cssjavascript,则尤其如此。

希望这有帮助...

In general the web server in front of application server pattern is still valid:

  1. web server to provide TLS/SSL termination; clients talk to your URL via HTTPS, the web server terminates SSL and forwards plain HTTP messages to your application server (tomcat). In this scenario the web server can take over the load caused by encryption (CPU utilization)
  2. web server to serve static content; when it comes to high traffic sites or sites serving a large amount of static content, the web server can provide the static content. Think of an application providing a product catalog which contains high resolution images (say > 1m). Downloading images directly from the application server requires one thread on your application server. It also reduces network I/O on your application server node.
  3. web server in Demilitarized Zone (DMZ); a common pattern in enterprise deployments. The web server is hosted in a zone available to the public, whereas your application server is hosted in an internal zone available to the web server only. This introduces another layer of security.
  4. web server to provide static caching; web servers like Apache are doing well when it comes to caching.

No question, depending on your use case it may look different:

  1. you gain most advantage of the examples provided above if your web server resides on a different server node as it's about computing power (CPU in this case).
  2. As always distributed computing introduces a layer of complexity, deployment and management in this case.
  3. establishing identical security approaches on both, web server and application server may become tricky, e.g. only certain users are allowed to access certain images.

Having web server and application server on the same nodes reduces the advantages of providing a web server. My experience is that when it comes to 'smaller' internal applications used by 'a few users' a web server is not necessary and tomcat serves well. This is especially true if your app only serves some static files like icons, css and javascript.

Hope this helps...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文