mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-11-04 06: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
							 | 
						|||
| 
								 | 
							
								-->
							 |