如何避免在jsp中重新加载js和css

时间:2011-08-03 06:09:24

标签: java jsp

我有几个相同的js和css文件,我曾经从不同的jsps加载。 如果已加载css和js,我们不需要再次加载文件。 但那些文件正在重新加载。并在firebug控制台中提供200个成功代码。 它应该给出302成功代码

我可以直接点击网址。我不想动态调用js和css。

 加载jsp内容

通过相对路径完成css和js加载。我无法复制代码。因为这里不允许

如果需要任何其他信息,请更新

1 个答案:

答案 0 :(得分:3)

假设您将JSP中的CSS和JS文件作为<script><link>标记中的静态引用引用,您可以避免在每个请求中为浏览器提供这些文件的情况。首次提供时设置HTTP标头。

如果没有为资源设置适当的到期时间或“新鲜度”保证,浏览器通常会每次都发出新资源副本,即使资源可能存在于浏览缓存中 。请注意,如果禁用了浏览器缓存,那么除非让用户启用浏览器缓存,否则您不能像网络程序员那样对浏览器的行为做任何事情。在此之前,浏览器每次都会请求新的资源副本。这些请求可以由代理缓存提供,但不一定存在这样的缓存。

在Java Web应用程序中设置资源到期时间或新鲜度保证可以通过以下任一方式完成:

  • 配置HTTP服务器或Web应用程序服务器(如果可能),在为CSS和JS文件或mimetypes生成的HTTP响应中设置ExpiresCache-Control标头。应该完成的配置更改因服务器而异,并且过于庞大而无法在此处列出。
  • 为您的网络应用程序编写一个Servlet过滤器,该过滤器将截取以*.js*.css结尾的网址的所有回复,并在回复中添加HTTP ExpiresCache-Control标头。如果您希望具有与Web和应用程序服务器相同的可配置性,则此选项不太可取;您需要通过web.xml文件中过滤器的init参数提供任何配置选项。此外,更改配置将需要重新启动包含过滤器的应用程序。

如果您需要了解要为ExpiresCache-Control标题指定的值,那么我建议您阅读"Caching Tutorial for Web Authors and Webmasters",其中提供了有关如何使用ExpiresCache-Control标头以及它们如何影响缓存行为。

Expires标题中指定的到期时间或max-age标题中的Cache-Control值的建议值,范围从几分钟到几小时不等,具体取决于您的频率更改网站内容。您还必须避免使用Cache-Controlno-cache值指定no-store标头,因为它们通常会在下次尝试时发出对同一资源的请求。