避免在jsp页面中缓存js和css文件

时间:2016-10-20 08:40:26

标签: javascript css jsp caching

我在谷歌搜索了很多但是没有得到任何答案。为了避免缓存js和css文件,我们可以在字符串之后附加一个版本号,就像我在下面所做的那样。

<script type="text/javascript"
    src="<c:url value='/resources/js/Invoice.js?version=1.0'/>">
</script>

但我希望使用一些随机数而不是1.0来避免缓存类似:

<script type="text/javascript"
        src="<c:url value='/resources/js/Invoice.js?version=<%=Math.random()%>' />">
    </script>

但它根本不起作用。请帮帮我

2 个答案:

答案 0 :(得分:1)

对于存储构建号码,我认为属性文件是最佳位置。对于您的问题,您可以使用Spring标记库获取此版本号,可以像这样包含

<div class="outerBdr">
   <div class="cenBdr">
      <input type="checkbox" id="name">
      <label for="name">Name</label>
   </div>
   <div class="cenBdr">
      <input type="checkbox" id="mark">
      <label for="mark">Marks</label>
      <div class="cenBdrInr">
         <div>
            <input type="checkbox" id="subj1">
            <label for="sub1">Subj1</label>
            <div class="cenBdrInr">
               <div>
                  <input type="checkbox" id="subj1">
                  <label for="sub1">Subj1</label>
               </div>
               <div>
                  <input type="checkbox" id="subj2">
                  <label for="subj2">subj2</label>
               </div>
               <div>
                  <input type="checkbox" id="subj3">
                  <label for="subj3">subj3</label>
                  <div class="cenBdrInr">
                     <div>
                        <input type="checkbox" id="subj1">
                        <label for="sub1">Subj1</label>
                     </div>
                     <div>
                        <input type="checkbox" id="subj2">
                        <label for="subj2">subj2</label>
                     </div>
                  </div>
               </div>
            </div>
         </div>
         <div>
            <input type="checkbox" id="subj2">
            <label for="subj2">subj2</label>
         </div>
         <div>
            <input type="checkbox" id="subj3">
            <label for="subj3">subj3</label>
         </div>
      </div>
   </div>
   <div class="cenBdr">
      <input type="checkbox" id="id">
      <label for="id"> ID</label>
   </div>
   <div class="cenBdr">
      <input type="checkbox" id="rank">
      <label for="rank"> Rank</label>
   </div>
   <div class="cenBdr">
      <input type="checkbox" id="rating">
      <label for="rating"> rating</label>
       <div class="cenBdrInr">
         <div>
            <input type="checkbox" id="subj1">
            <label for="sub1">Subj1</label>
            <div class="cenBdrInr">
               <div>
                  <input type="checkbox" id="subj1">
                  <label for="sub1">Subj1</label>
               </div>
               <div>
                  <input type="checkbox" id="subj2">
                  <label for="subj2">subj2</label>
               </div>
               <div>
                  <input type="checkbox" id="subj3">
                  <label for="subj3">subj3</label>
                  <div class="cenBdrInr">
                     <div>
                        <input type="checkbox" id="subj1">
                        <label for="sub1">Subj1</label>
                     </div>
                     <div>
                        <input type="checkbox" id="subj2">
                        <label for="subj2">subj2</label>
                     </div>
                  </div>
               </div>
            </div>
         </div>
         <div>
            <input type="checkbox" id="subj2">
            <label for="subj2">subj2</label>
         </div>
         <div>
            <input type="checkbox" id="subj3">
            <label for="subj3">subj3</label>
         </div>
      </div>
   </div>
   <div class="cenBdr">
      <input type="checkbox" id="class">
      <label for="class"> class</label>
   </div>
</div>

已更新

然后,您可以从ApplicationServlet.xml中配置的属性文件中获取内部版本号,最后可以使用内部版本号,如下所示,

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>

您的applicationServlet-servlet.xml文件必须包含类似的内容,

<spring:message code="buildNumber" var="buildNumber" />
<link rel="stylesheet" href="<c:url value="/resources/css/custom/select2.css?${buildNumber}"/>" type="text/css" />

在这里,您可以将您的内部版本号存储在名为buildNumber.properties的单独属性文件中,并具有此类条目<beans:bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <beans:property name="basenames"> <beans:list> <beans:value>buildNumber</beans:value> <beans:value>gui</beans:value> <beans:value>message</beans:value> </beans:list> </beans:property> </beans:bean>

您可以随时在将最新代码部署到服务器时更改内部版本号。

通过这种方式,您可以确保在部署新版本的应用程序时,您的客户不需要清除自己的浏览器缓存。

答案 1 :(得分:0)

请在您的属性文件中使用此键值,但我不确定您的方案,这对我有用。 browser.cache.disabled=true