Salvar resposta de chamada ajax em cache

  • Autor Autor Juanjo87
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
J

Juanjo87

Gamma
Diseñador
Usuário com poucas negociações! Use sempre o saldo do ForoBeta!
Buenas, estoy intentando guardar la respuesta de una llamada ajax, en la cache.
Estoy desarrollando un script que carga información a través de ajax, pero necesito que me guarde en cache las respuestas, para que cada vez que se solicite la información, no vuelva a hacerme la petición al servidor, y conseguir así una respuesta mas rápida.

El problema es que no encuentro un tutorial en español sobre esto y los que e encontrado no consigo adaptarlo a mi código.
el código simplificado que tengo es así.

En function:

PHP:
<?php


function hover_effect() {
    if ( ! is_numeric( $_POST['post_id']))
        die("Wrong ID!");
    $_POST['post_id'] = abs(intval($_POST['post_id']));
    if ( ! $_POST['post_id'] )
        die("Wrong ID!");
    if(isset($_POST['post_id'])){
        global $post;
        $post =  get_post($_POST['post_id']);
        if ($post!=null){
            setup_postdata($post);
            ?>


<a class="hover_effect" rel="nofollow" href="<?php the_permalink(); ?>">

   <img class="img_licar" title="<?php echo $post->post_title; ?>" src="<?php the_post_thumbnail_url( 'medium' ); ?>"  />

<?php echo excerpt(25); ?>
</a>

			
            <?php
        }
    }
    die();
}

add_action('wp_ajax_hover_effect', 'hover_effect');
add_action('wp_ajax_nopriv_hover_effect', 'hover_effect');
?>

y la llamada jquery la hago asi

PHP:
<script>
function effect_hover(id){
var respuesta;
var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";	  	  
var DivContenedor =	$("#effect_hover_box");
	DivContenedor.html("");		



 
    jQuery.post(
		ajaxurl, 
		{
		    'action': 'hover_effect',
			
		    'post_id':   id,
			
		}, 
	
	    function(response){
			
respuesta = response;

if(respuesta)
    {
   
		
        DivContenedor.html(respuesta);
			
    }
    else{
      /*  alert("la respuesta fue falso");*/
    }
....
</script>

Agradezco cualquier ayuda
 
Última edição:
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Las peticiones POST no las puedes guardar en cache, tendrias que cambiar a GET y agregar un encabezado de cache-control
 
Vale, voy a ver que encuentro y voy comentando, gracias
 
si quieres guardar prueba usando el sessionStorage del navegador, usa una condicional para comprobar si existen los recursos en el sessionStorage si el recurso no esta almacenado, lo sirves por ajax y lo guardas, ahora en la próxima petición ya debería existir por lo que no harías la petición.

sessionStorage o localStorage, lo que veas mas conveniente.
 
Última edição:
gracias jarri pero creo que esto se me esta quedando un poco grande, pues no me atrevo a cambiar de type: POST A GET pues me tira un erro.
Serias tan amable de ayudarme con el codigo?

- - - Actualizado - - -

pues de momento sigo igual.
Nadie me puede ayudar?
 
Alguien puede aportar algo, por favor, algun tutorial, algunos ejemplos.
Estoy muy liado, no se si debo de hacer esto con cookie, localstorage, sesionstorage...tengo un lio de mil demonios...

- - - Actualizado - - -

esto es lo ultimo que he intentado, el codigo sige funcionando pero no me almacena nada en cache y me vuelve a repetir el proceso de carga, asi que es como si nada...

PHP:
<script>

function effect_hover(id){
var respuesta;  
var DivContenedor =	$("div#effect_hover_box");
	DivContenedor.html("");		

 
    
 var cacheObj = {};
 
 if (cacheObj.postID_from_ajax){

    display(cacheObj.postID);

}else{

 
    $.post(
	     MyAjax.url, 
{
			'nonce' : MyAjax.nonce,
		    'action': 'hover_effect',
		    'post_id':   id,
			
		}, 		 

		
		function(response) {

        _doing_ajaxx = false;
        cacheObj.postID_from_ajax = response;
        display(response);

    });
}

function display(response){

   DivContenedor.html(response);

}
		
					
 


}

</script>

- - - Actualizado - - -

jarri, usted sabe montar el codigo?
Puede ayudarme si es asi?

- - - Actualizado - - -

Ajax content change with localstorage caching - Jonas van Ineveld
esto es un ejemplo de lo que quiero hacer, pero no lo consigo, a ver si alguien me echa una mano
 
Última edição:
aun sigo dándole vueltas a esto, y no consigo nada, si alguien en cualquier momento me puede ayudar se lo agradezco.
 
Voltar
Topo