我有几个相同的 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 应用程序服务器(如果可能)以设置
Expires
和Cache-Control
为 CSS 和 JS 文件或 mime 类型生成的 HTTP 响应中的 header 。应该完成的配置更改因服务器而异,范围太广,无法在此处列出。 - 为您的 Web 应用程序编写一个 Servlet 过滤器,它将拦截对以
*.js
结尾的 URL 的所有响应。和*.css
并添加 HTTPExpires
和Cache-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/