mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-10-31 04:11:37 +01:00 
			
		
		
		
	
		
			
	
	
		
			130 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
		
		
			
		
	
	
			130 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
|   | <?xml version="1.0" encoding="iso-8859-1"?> | |||
|  | <!-- $Revision$ --> | |||
|  |    <sect1 id="caching.multiple.caches"> | |||
|  |     <title>Multiples caches por pagina</title> | |||
|  |     <para> | |||
|  |      Usted puede tener multiples archivos de cache para una simples llamada  | |||
|  |      de display() o fetch(). Vamos a decir que una llamada a  | |||
|  |      display('index.tpl') debe tener varios contenidos de salida diferentes  | |||
|  |      dependiendo de alguna condici<63>n, y usted quiere separar los caches para  | |||
|  |      cada una. Usted puede hacer esto pasando un cache_id como un segundo  | |||
|  |      par<61>metro en la llamada de la funci<63>n. | |||
|  |     </para> | |||
|  |     <example> | |||
|  |      <title>Pasando un cache_id para display()</title> | |||
|  |      <programlisting role="php"> | |||
|  | <![CDATA[ | |||
|  | <?php | |||
|  | require('Smarty.class.php'); | |||
|  | $smarty = new Smarty; | |||
|  | 
 | |||
|  | $smarty->caching = true; | |||
|  | 
 | |||
|  | $my_cache_id = $_GET['article_id']; | |||
|  | 
 | |||
|  | $smarty->display('index.tpl',$my_cache_id); | |||
|  | ?> | |||
|  | ]]> | |||
|  |      </programlisting> | |||
|  |     </example> | |||
|  |     <para> | |||
|  |      Arriba, nosotros pasamos la variable $my_cache_id a display() con  | |||
|  |      el cache_id. Para cada valor unico de $my_cache_id, un cache por  | |||
|  |      separado sera generado para cada index.tpl. En este ejemplo,  | |||
|  |      "article_id" fue pasado en URL y es usado como el cache_id. | |||
|  |     </para> | |||
|  |     <note> | |||
|  |      <title>Nota T<>cnica</title> | |||
|  |      <para> | |||
|  |      Tenga mucho cuidado cuando pase valores del cliente (web browser)  | |||
|  |      dentro de Smarty (o alguna aplicaci<63>n PHP). Aunque el ejemplo de  | |||
|  |      arriba usar el article_id desde una URL parece facil, esto podr<64>a  | |||
|  |      tener fatales consecuencias. El cache_id es usado para crear un  | |||
|  |      directorio en el sistema de archivos, entonces si el usuario decide  | |||
|  |      pasar un valor extremadamente largo para article_id, o escribir un  | |||
|  |      script que envia article_ids aleatorios en un paso r<>pido, esto  | |||
|  |      posiblemente podr<64>a causar problemas a nivel del servidor. Tenga la  | |||
|  |      certeza de limpiar alg<6C>n dato pasado antes de usarlo. En este ejemplo,  | |||
|  |      tal vez usted sabia que el article_id tiene un largo de 10 caracteres | |||
|  |      este es constituido solamente de alfanum<75>ricos, y debe ser un article_id  | |||
|  |      valido en la base de datos. Verifique esto! | |||
|  |      </para> | |||
|  |     </note> | |||
|  |     <para> | |||
|  |     Asegurarse de pasar el mismo cache_id como el segundo par<61>metro | |||
|  |     para <link linkend="api.is.cached">is_cached()</link> y  | |||
|  |     <link linkend="api.clear.cache">clear_cache()</link>. | |||
|  |     </para> | |||
|  |     <example> | |||
|  |      <title>Pasando un cache_id para is_cached()</title> | |||
|  |      <programlisting role="php"> | |||
|  | <![CDATA[ | |||
|  | <?php | |||
|  | require('Smarty.class.php'); | |||
|  | $smarty = new Smarty; | |||
|  | 
 | |||
|  | $smarty->caching = true; | |||
|  | 
 | |||
|  | $my_cache_id = $_GET['article_id']; | |||
|  | 
 | |||
|  | if(!$smarty->is_cached('index.tpl',$my_cache_id)) { | |||
|  |     // No cache available, do variable assignments here. | |||
|  |     $contents = get_database_contents(); | |||
|  |     $smarty->assign($contents); | |||
|  | } | |||
|  | 
 | |||
|  | $smarty->display('index.tpl',$my_cache_id); | |||
|  | ?> | |||
|  | ]]> | |||
|  |      </programlisting> | |||
|  |     </example> | |||
|  |     <para> | |||
|  |      Usted puede limpar todos los caches para un cache_id en particular  | |||
|  |      pasando el primer par<61>metro null a clear_cache(). | |||
|  |     </para> | |||
|  |     <example> | |||
|  |      <title> Limpando todos los caches para un cache_id en particular</title> | |||
|  |      <programlisting role="php"> | |||
|  | <![CDATA[ | |||
|  | <?php | |||
|  | require('Smarty.class.php'); | |||
|  | $smarty = new Smarty; | |||
|  | 
 | |||
|  | $smarty->caching = true; | |||
|  | 
 | |||
|  | // clear all caches with "sports" as the cache_id | |||
|  | $smarty->clear_cache(null,"sports"); | |||
|  | 
 | |||
|  | $smarty->display('index.tpl',"sports"); | |||
|  | ?> | |||
|  | ]]> | |||
|  |      </programlisting> | |||
|  |     </example> | |||
|  |     <para> | |||
|  |      De esta manera, usted puede "agrupar" sus caches conjuntamente dandoles  | |||
|  |      el mismo cache_id. | |||
|  |     </para> | |||
|  |      | |||
|  |    </sect1> | |||
|  |     | |||
|  | <!-- Keep this comment at the end of the file
 | |||
|  | Local variables: | |||
|  | mode: sgml | |||
|  | sgml-omittag:t | |||
|  | sgml-shorttag:t | |||
|  | sgml-minimize-attributes:nil | |||
|  | sgml-always-quote-attributes:t | |||
|  | sgml-indent-step:1 | |||
|  | sgml-indent-data:t | |||
|  | indent-tabs-mode:nil | |||
|  | sgml-parent-document:nil | |||
|  | sgml-default-dtd-file:"../../../../manual.ced" | |||
|  | sgml-exposed-tags:nil | |||
|  | sgml-local-catalogs:nil | |||
|  | sgml-local-ecat-files:nil | |||
|  | End: | |||
|  | vim600: syn=xml fen fdm=syntax fdl=2 si | |||
|  | vim: et tw=78 syn=sgml | |||
|  | vi: ts=1 sw=1 | |||
|  | --> |