You are not logged in.
Pages: 1
Bonjour,
J'utilise un RequestParametersInputData qui permet de dynamiser le contenu d'une page en fonction de paramètres HTTP.
Cet inputData est déclaré dans un fichier inputdata.xml :
<input-data-collection>
<input-data>org.ametys.web.inputdata.SitemapInputData</input-data>
<input-data>org.ametys.web.tags.inputdata.FilteredContentsInputData</input-data>
<input-data>org.ametys.web.tags.inputdata.FilteredPagesInputData</input-data>
<input-data>[b]com.anwrt.inpt.siteweb.inpt.RequestParametersInputData[/b]</input-data>
</input-data-collection>
Cela fonctionnait à l'époque mais ne fonctionne plus dans les dernières versions d'Ametys :
Les paramètres sont biens pris en comptes et présents dans l'inputData à la première génération (premier accès à la page), mais ensuite l'inputData ne bouge plus, même si les paramètres ne sont plus envoyées, ils demeurent dans l'inputData, et donc adieu le côté dynamique.
Il semble que l'inputData soit mis en cache, et j'ai vu cette feature dans le jar ametys-web-3.4.1.jar :
<feature name="inputdata.cache">
<config>
<param-ref id="page.element.cache.disabled"/>
</config>
<components>
<component class="org.ametys.web.cache.pageelement.PageElementCache"
role="org.ametys.web.cache.pageelement.PageElementCache/inputData"
logger="org.ametys.web.cache.pageelement.PageElementCache.inputData"/>
</components>
<extensions>
<extension point="org.ametys.cms.observation.ObserverExtensionPoint"
id="org.ametys.web.cache.pageelement.InvalidatePageElementCacheObserver"
class="org.ametys.web.cache.pageelement.InvalidatePageElementCacheObserver">
<cache>org.ametys.web.cache.pageelement.PageElementCache/inputData</cache>
<policies>org.ametys.web.cache.pageelement.PageElementCachePolicyExtensionPoint/inputData</policies>
</extension>
</extensions>
</feature>
Peux-t-on désactiver le cache InputData en commentant ou en modifiant le paramétrage de cette extension ?
Merci pour toute piste ou avis.
Last edited by François Jannin (21/03/2014 10:35:52)
Offline
On peut tout à fait désactiver le cache par parties (case à cocher dans la conf de l'admin), mais ce n'est pas recommandé.
Depuis la 3.4, les InputData ont une méthode isCacheable que vous avez forcément du implémenter, sinon ça ne compile plus. Cette méthode permet, en fonction de la page et du contexte courant, de déterminer si le résultat de l'inputdata doit être mis en cache ou pas.
Offline
Merci Cédric, j'ai testé en pre-prod et les deux solutions fonctionnent !
J'ai opté pour la seconde solution et J'ai recompilé ma classe avec la méthode manquante.
Offline
Pages: 1