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

标签 java jsp

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

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

加载jsp内容

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

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

最佳答案

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

如果没有为资源设置适当的过期时间或“新鲜度”保证,浏览器通常每次都会发布资源的新副本,即使资源可能存在在浏览缓存中.请注意,如果浏览器缓存被禁用,那么作为网络程序员,您不能对浏览器的行为做任何事情,除非您让您的用户启用浏览器缓存;在此之前,浏览器每次都会请求资源的新副本。这些请求可能由代理缓存提供服务,但这种缓存的存在不是必需的。

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

  • 配置 HTTP 服务器或 Web 应用程序服务器(如果可能)以设置 ExpiresCache-Control为 CSS 和 JS 文件或 mime 类型生成的 HTTP 响应中的 header 。应该完成的配置更改因服务器而异,范围太广,无法在此处列出。
  • 为您的 Web 应用程序编写一个 Servlet 过滤器,它将拦截对以 *.js 结尾的 URL 的所有响应。和 *.css并添加 HTTP ExpiresCache-Control响应的标题。此选项不太可取,特别是如果您希望拥有与 Web 和应用程序服务器提供的相同数量的可配置性;您将需要通过初始化参数为您的 web.xml 中的过滤器提供任何配置选项文件。此外,对配置的更改将需要重新启动包含过滤器的应用程序。

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

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

关于java - 如何避免在jsp中重新加载js和css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6922354/

相关文章:

java - 从 ServletContext 资源 [/WEB-INF/applicationContext.xml] 解析 XML 文档;

java - OWASP ZAP 代理卡住

java - spring-hibernate 花费更多时间的任何原因?

java - 将简单的 Applet GUI 从 Swing 转换为 JavaFX

java - 如何防止 Eclipse 格式化程序在注释中的注释后添加空格?

java - 如何解码包装的 xml

java - Scriptlet 变量不会在自定义 JSP 标记的属性内进行评估

java - 如果测试不显示代码部分 - spring mvc

jsp - Struts2 JSP 图

java - JSP 和 Java Servlet