我有一個JSF組件,它通過ajax請求由一個按鈕刷新。該組件有一個圖像,該圖像為了一個值而改變。如果我查看網絡請求,我可以看到我的瀏覽器沒有緩存圖像,而是在每次點擊時都請求它們。這會導致視圖渲染中出現某種“彈出”現象。
我想通過緩存圖像來加快刷新時間和渲染時間。我已經嘗試在GET方法上使用RequestFilter,它將Cache-Control頭設置為“public ”,但是不起作用。
知道嗎?
延遲指示器
<!-- IMPLEMENTATION -->
<composite:implementation>
<h:panelGrid columns="2">
<c:choose>
<c:when test="#{cc.attrs.latencia ge cc.attrs.umbralAlto}">
<p:graphicImage value="#{resource['images:rojo.png']}"/>
</c:when>
<c:when test="#{(cc.attrs.latencia lt cc.attrs.umbralAlto) and (cc.attrs.latencia ge cc.attrs.umbralMedio)}">
<p:graphicImage value="#{resource['images:ambar.png']}"/>
</c:when>
<c:otherwise>
<p:graphicImage value="#{resource['images:verde.png']}"/>
</c:otherwise>
</c:choose>
<h:outputText value="#{cc.attrs.latencia} ms."/>
</h:panelGrid>
</composite:implementation>
示例. xhtml
<h:body>
<h:form id="miForm">
<h:commandButton id="boton" value="Generar Latencia">
<f:ajax render="@form" event="click" listener="#{latencyBean.actualizarLatencia()}"/>
</h:commandButton>
<miscomponentes:LatencyIndicator latencia="#{latencyBean.latencia}"/>
</h:form>
</h:body>
這可能有多種原因:
您是否通過web.xml中的上下文參數javax.faces.PROJECT_STAGE將項目階段設置為開發?因為在這種情況下,JSF禁用緩存。將參數設置為Production(默認值)應該會啟用緩存。 你使用低于2.1.21的Mojarra版本嗎?舊版本中有一個阻止緩存的錯誤。在這種情況下,您可以嘗試新版本。