Consideraciones sobre el almacenamiento dinámico en memoria caché con JSTL

HCL Commerceutiliza la JSTL (Java Server Tag Library) para crear páginas JSP nuevas. Si <% out.flush(); %> no está rodeado por la etiqueta <c:import> , la utilización de dynacache presenta un comportamiento extraño. La sentencia out.flush es necesaria para todas las sentencias <c:import>, no sólo las que son para fragmentos. Incluso si la página se almacena en memoria caché al utilizar la memoria caché de página completa, es necesario que las etiquetas out.flush se rodeen de etiquetas <c:import>.

Al utilizar el código de importación JSTL, JSPWriter pone en el almacenamiento intermedio los datos. No desecha los datos en el transcriptor de la memoria caché. Debido a este almacenamiento intermedio, dynacache no sabe cuándo la aplicación ha dejado de grabar los datos en el transcriptor padre. Como resultado, es posible que el contenido del hijo también se almacene en memoria caché como parte de la entrada de memoria caché del padre y que haga aparecer dos veces el fragmento hijo.

Para evitar este problema, escriba las etiquetas <c:import> con <% out.flush(); %>. Deseche el almacenamiento intermedio antes de que empiece la importación y después de que termine para asegurarse de que ningún contenido hijo se graba en la entrada de memoria caché del padre.