Empecher le cache d'une partie de ma page

Fermé
polo1627 Messages postés 2 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 21 août 2008 - 21 août 2008 à 10:50
 wolf - 19 févr. 2009 à 12:24
Bonjour à tous,

Voilà plusieurs jours que je me suis penché sur le problème de cache de ma page d'accueil de mon site inetrnet.
En effet quand je mets à jour ma page en mettant de nouvelles news, si les visiteurs n'actualisent pas leur page, ils ne voient pas ma mise à jour. J'ai donc supposé que c'était un problème de cache.

En cherchant sur les forums j'ai trouvé qu'il y avait un code à rajouter pour justement empêcher le cache sur ma page et qui est:
<META HTTP-EQUIV="Pragma" content="no-cache">

Mais le problème et si j'ai bien compris c'est que ça empêche le cache sur la page entière, hors moi je voudrai laisser le cache sur tout sauf sur l'élément DIV où se trouve mes news.

Donc voilà ma question: peut-on empêcher le cache seulement sur un élément DIV d'une page HTML et laisser le reste en cache ???

Merci de vos réponses par avance

(je précise que je débute dans la création de site internet, j'ai donc peu de connaissance mais ne demande qu'à apprendre)
A voir également:

6 réponses

Bonjour

Tutoriel AJAX (Asynchronous Javascript And XML)
La création de pages web dynamiques coté client

https://www.xul.fr/xml-ajax.html

Merci
1
Bonjour

Utilises des "Berkeley sockets" ! Le cache c'est utile ; même si tu renouvelles les infos souvent !

(On aura quoi si ton serveur est bloqué et que la portion de la page renouvelée n'est plus en cache ?)

https://fr.wikipedia.org/wiki/Berkeley_sockets

Merci à d'autres pour les détails car je ne sais pas les mettre en œuvres
0
Bonjour


Voici un exemple d'une requête qui appelle une page php qui affichera l'heure server (actualisation toutes les minutes).

function XHRQuery()
{
        var XHR; // on déclare l'instance
        if (window.XMLHttpRequest) XHR = new XMLHttpRequest(); // Firefox, Opera, Konqueror, Safari, IE 7...
        else if (window.ActiveXObject) XHR = new ActiveXObject('Microsoft.XMLHTTP'); // Internet Explorer < 7.
        else alert('JavaScript : votre navigateur ne supporte pas les objets XMLHttpRequest...'); // Navigateur ancien.
 
        XHR.open('POST','heure.php',true);
/*Ouverture de la connexion avec heure.php, le premier paramètre indique une méthode
(POST dans notre cas), le deuxième la page à contacter, le troisième le type de connexion
(true = asynchrone, false = synchrone), true est recommandé.*/
        XHR.onreadystatechange = function() // attribution de la fonction
        {
                if (XHR.readyState == 4)
                {
                        document.getElementById('give_me_hour').innerHTML = XHR.responseText;
                }
 
                else
                {
                        document.getElementById('give_me_hour').innerHTML = '<span class="wait">Veuillez attendre, opération en cours...</span>';
                }
        }
        XHR.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        var data = 'pseudo='+escape("Gérard")+'&email='+escape("gerarddupond@monemail.com");
/*Ici, on veut juste l'heure, mais comme nous utilisons la méthode POST, il est possible
de mettre des données dans data, on va donc mettre un pseudonyme et un email que PHP nous
retournera en plus de l'heure. De plus, à la place du texte dans escape, on peut mettre
un nom de variable, exemple : escape(pseudo).*/
        XHR.send(data); //Envoi des données par la méthode post.
}
var heure = setInterval('XHRQuery()', 60000);

//heure.php
$time = time();
$heures = date('H', $time);
$minutes = date('i', $time);
$secondes = date('s', $time);
echo 'Bienvenue '.$_POST['pseudo'].', votre email est '.$_POST['email'].' et il est '.$heures.':'.$minutes.':'.$secondes.'.';

Récursivité :

Attention ! La récursivité n'est pas assuré. Ainsi du code javascript présent dans la page chargé via XMLHttpRequest ne sera pas exécuté.

Il faut extraire le code javascript depuis la page mère afin de l'exécuter.

Le code suivant exécute le javascript présent entre des balises <script></script> dans la page fille, après l'avoir chargé comme décrit précédemment :

if (XHR.readyState == 4)
{
        document.getElementById('contenu').innerHTML = XHR.responseText;
        var js = document.getElementById('contenu').getElementsByTagName('script');
        for( var i in js )
        {
                eval(js[i].text);
        }
}

Source 'XMLHttpRequest' sur Wikipedia® : https://fr.wikipedia.org/wiki/XMLHttpRequest

Merci
0
Bonjour


Le problème, c'est que vu mon niveau je n'ai absolument rien compris.
Je te rassure mon niveau en programmation n'est pas très haut ; je touche même le sol :))


Une question revient souvent sur les forums dédiés au JavaScript : Peut-on réaliser une requête sur le serveur sans (re)charger une page et sans utiliser d'astuces telles qu'une frame invisible ou une fenêtre popup ? Jusqu'à peu, je pensais que la réponse était aussi claire que négative. Et puis j'ai découvert XMLHTTPRequest et la réponse est devenue : « Oui ! » Mais les documentations sur ce sujet ne se bousculent pas sur le net, notamment en français. D'où cette petite introduction aux objets XMLHTTPRequest (que nous appellerons ainsi même si le nom diffère d'un navigateur à l'autre). Pour l'instant, c'est uniquement compatible Internet Explorer et Firefox mais je crois avoir lu quelques informations intéressantes pour Opera[1]. Quant à Netscape, bah... je ne suis pas nécrophile.


https://www.toutjavascript.com/savoir/xmlhttprequest.php3


Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour,

Si tu t'interesses a l'AJAX et a javascript en general, je te conseille Jquery. C'est une librairie Javascript qui te simplifira la vie.
0
polo1627 Messages postés 2 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 21 août 2008
21 août 2008 à 12:45
Merci pour vos réponses

Le problème, c'est que vu mon niveau je n'ai absolument rien compris. Quand j'ai vu tout le code j'ai commencé par avoir peur, puis ensuite j'ai essayé de comprendre, j'ai été voir également sur les liens mais rien à faire, je patauge complètement !!!

En fait je m'attendais juste à une ligne de commande à glisser au niveau de mon élément DIV et de son contenu que je veux actualiser à chaque fois qu'une personne visite mon site tout en laissant le reste de la page dans le cache.

Mais apparemment ce n'est pas aussi simple. Donc pour l'instant je vais mettre la ligne de code avec le "no-cache" ça sera mieux que rien et je vais continuer à essayer de comprendre et maîtriser les éléments que vous m'avez donné dans vos réponses.

Merci encore, et si d'autres personnes avaient une autre solution n'hésitait pas.
-1