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

在Tomcat6中加速图像

  •  3
  • ethyreal  · 技术社区  · 16 年前

    在Tomcat6中,我有一个运行openbluedragon的servlet,所有的编译和服务器都运行得很快,除了图像,它们真的滞后了很多。对图像服务的优化有什么建议吗?

    这是my server.xml:

        <Service name="Catalina">
    
          <Connector port="8009" protocol="AJP/1.3" />
          <Connector port="8080" maxThreads="100" protocol="HTTP/1.1" connectionTimeout="20000" />
          <Engine name="Standalone" defaultHost="hostname.whatever" jvmRoute="ajp13">
    
          <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
          <Host name="hostname.whatever"  appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
            ...context
          </Host>
    
        </Engine>
      </Service>
    
    3 回复  |  直到 16 年前
        1
  •  4
  •   Olaf Kock    16 年前

    在Unix上,使用apache作为前端是一个不错的选择,因为绑定到端口80时,您常常被迫以root用户身份运行。Apache知道如何在绑定端口后删除根权限,而Tomcat不知道。您不希望面向公众的服务器以root用户身份运行。

    (这类似于反向代理回答,但不涉及代理,而是mod_jk)

        2
  •  4
  •   Simon Groenewolt    16 年前

        3
  •  3
  •   user19113    16 年前

    如果您有选择权,可以在应用程序之前添加反向代理。在工作中,我有一个接收所有入站HTTP连接的Apache web服务器。根据URL,它要么将请求转发到另一台服务器,要么自己提供内容。我使用这种方法来加速为Trac站点提供静态内容。如果您想走这条路线,那么ProxyPass和ProxyPassReverse指令是开始查找的好地方。

    作为一个简单的例子,如果您有一个名为/images的虚拟目录,Apache可以为该目录中的任何内容提供请求,并将所有其他内容转发给您的Tomcat实例。语法相当全面。如果有任何方法可以识别静态内容,那么这是一种可行的方法。

    Apache不是这里唯一的选择。我认为所有现代web服务器都包含类似的功能。如果我从今天开始,我可能会转而关注LigHTTPd,因为它做的更少。

    甚至可能会有缓存反向代理自动为您解决这一问题。不过,我对其中任何一个都不熟悉。