用于静态内容的JSF库 - 或普通的静态文件 - 性能?

Ric*_*eld 6 jsf-2

我们有两种方式可以提供图片,javascript,css等项目.

  • 一个静态区域,比如"/images/foo.png"
  • 一个JSF库,它呈现诸如"/javax.faces.library/foo.png?ln=images"之类的东西

后者似乎是JSF中的事情.这很容易做到.它有很多支持.

前者在性能重要的情况下允许有趣的技巧.我们可以安排我们的服务器不将/ images传递给servlet引擎,而是使用更快的东西.公平地说,我不知道有没有人使用我们的软件做过这个,或者有多少像Tomcat或JBoss这样的东西服务于Apache等本地的静态内容,以及这与业务逻辑的成本有多大关系这也是为了提供应用程序本身.

我们希望在这两种情况下,图像都能在很长时间内提供,因此浏览器可以缓存它们.我注意到JSF版本有一个查询字符串部分,所以希望浏览器不会决定它知道更好并拒绝缓存.我们必须看一些痕迹,看看发生了什么.

那该怎么办?JSF库?特别是h:outputScript和h:outputStylesheet控件之类的支持?或者网站的图片区域?

谢谢 - 理查德

Ner*_*rve 1

出于性能原因,我发现自己最好使用自定义解决方案,其中 jsf 不管理我的页面依赖项。通过某种自定义“资源管理”servlet 拥有自己的依赖关系解析机制,可以让您在请求每个资源时可以执行的操作具有很大的灵活性

这样做的一些优点,

  • 根据您的要求添加缓存标头
  • 能够提供串联的资源,而不是一次提供一种资源。因此,如果您构建像“ http://server.com/app/resources/one,two.js ”这样的资源 URL ,则可以通过在内存中连接文件 one.js 和 Two.js 在一个请求中提供这两个文件。
  • 只需更改图像上的查询参数即可使用自定义缓存失效策略。例如。http://server.com/app/resources/images/apple.jpg?version=1其中“version”可以是您的应用程序的版本。
  • 维护自己的静态资源目录结构,不必严格依赖jsf的资源目录结构。

或者,您也可以将所有这些工作委托给其他应用程序或第三方,以更好地完成所有这些工作。