Bonjour, je débute avec cakephp, en cour de développement j'ai du migrer vers OVH, et depuis la migration, mes vues semblent se charger deux fois coup sur coup.

J'ai un fade-in au changement de page, mais aprés la redirection ça bloque, dans firebug je voix que la vue se charge une première fois normalement mais ne s'affiche pas. elle se reload aussitôt et un coup sur deux elle bloque totalement. À noter que quand ça bloque, si j'arrète manuellement le chargement par le navigateur paf fade-in direct page complète.

alors d'ou ça peut venir ? une option chez ovh ? un problême de redirection multiples ? une action à la migration que j'aurais oublié ?

Merci de votre aide.

6 réponses


Lartak
Réponse acceptée

Pour commencer, juste une petite précision.
default.ctp n'est pas une vue, mais un layout.
Ensuite, il me semble qu'il y a quelques problèmes dans le code javascript, comme par exemple, il serait peut-être judicieux de faire passer l'url en paramètre dans la fonction redirectPage.

redirectPage(linkLocation)
    /* ... */

    function redirectPage(url) {
        window.location = url;
    }

Et puis, ne regardes pas que dans l'onglet Console, regardes également dans l'onglet Network (sur l'inspecteur de Firefox ils ne s'appellent peut-être pas de la même manière), dans la partie du traitement des requêtes (xhr & Cie).
Tu y trouveras peut-être la source du problème.

Bonsoir.
Le fadeIn s'effectue sur quel genre d'élément Html ?
L'élément Html se situe sur le layout ou sur un fichier vue ?
Le problème se rencontre sur toutes les pages du site ou sur une en particulier ?

Un peu plus de précisions pourrait nous permettre de mieux définir le problème et de t'aider.

Le script est situé sur la vue default.ctp et agit sur le content et le footer via la classe transition-panel:

  <div  id='bloc-principal' >
                  <!-- HEADER -->                  
                  <div class="container">
                                .....
                  </div>

                  <!-- CONTENT -->
                   <div class="content transition-panel">
                                <?= $content_for_layout; ?>
                    </div> 
  </div>
<!--  FOOTER  -->  
  <footer class="footer transition-panel footer-menu">
        <div class="container">... 

et il est appelé par un script dans le head de la vue default.ctp à tous changements de page:

<?= $this->Html->scriptStart(); ?>

 $(document).ready(function() {
   $(".transition-panel").css("display", "none");
   $(".transition-panel").fadeIn(1500);

   $("a.transition").click(function(event){
       event.preventDefault();
       linkLocation = this.href;
       $(".transition-panel").fadeOut(1000, redirectPage);   
  });

  function redirectPage() {
    window.location = linkLocation;
  }

}); 

<?= $this->Html->scriptEnd(); ?>

avec des liens internes qui possèdent la classe transition pour lancer le fadeout et la redirection:

<?= $this->Html->link(
  'SE CONNECTER', 
  array(
    'controller' => 'users', 
     'action' => 'login'),
  array(
      'class' => 'transition',
      'id' => 'connect-bt'
));?>

ou

echo $this->Html->link(
    $v['name'],
    $v['link'],
    array('class' => 'transition'
));

quand au probleme il se produit sur toutes les pages, à chaque changement de page, et un fois sur deux soit il s'affiche au bout d'un moment soit il bloque en display:none en continuant de charger la vue dans le vide.

Alors je comprend pas trop pourquoi, mais ça a résolu le problème de double chargement.
En tout cas merci Lartak.
C'était bien dans le réseau que je surveillais les chargement, et le xhr dit que la vue met + de 5 secondes à se charger.
Maintenant, de temps en temps, ça bloque encore avant le fadein, ça pourait venir du $(document).ready dans le srcipt ?
j'peux peut etre écouter le préload pour forcer le fadein ?