$_SERVER['REQUEST_TIME'] ?

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par ortolojf, 29 Septembre 2022.

  1. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 676
    J'aime reçus:
    39
    Bonjour

    Comment est-il possible de lire/avoir ces headers request HTTP en PHP :

    $_SERVER['REQUEST_TIME']

    $_SERVER['REQUEST_TIME_FLOAT']

    Ces headers sur mon Nginx local ou site, n'y figurent pas.

    Et puis, ils donnent le timestamp au moment de la requête HTTP, ou au début de l'exécution du script PHP ?

    Merci beaucoup.


     
  2. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    12 018
    J'aime reçus:
    133
  3. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 676
    J'aime reçus:
    39
    Merci beaucoup UsagiYojimbo

    C'est super, je vais pouvoir calculer le header "Age", qui me permettra d'évaluer le caractère "fresh" ou "stale" de la ressource.

    J'ai presque terminé le cache HTTP de la librairie de cache HTML de noren.

    Bien à vous.
     
  4. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 676
    J'aime reçus:
    39
    Rebonjour UsagiYojimbo

    Et pour le "response time", comment le calculer ?

    Merci beaucoup.
     
  5. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 676
    J'aime reçus:
    39
    Rebonjour

    Je peux calculer time() ou microtime() à la fin du script.

    Car la librairie de cache HTML de noren me permet de donner le Content-Length, le ETag, le LastModified etc...

    J'ai toutes les variables pour calculer le header "Age" sauf le timestamp de réception.

    Merci beaucoup.
     
  6. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 676
    J'aime reçus:
    39
    Voici les détails du calcul de "Age".

    Le header "Age" contient le nombre de secondes écoulées depuis le dernière validation ou création de la ressource.

    Age doit être incrémenté/calculé pour le test de comparaison avec max-age=N, ( "fresh" ou "stale" ).

    J'ai toutes les variables sauf "response time".

    Que faire ?

    Merci.





    Code:
    age_value          => Age | 0
    date_value        => Date
    *******************************************
    now                   => Date ?
    *******************************************
    The term "now" means "the current value of the clock at the host
    performing the calculation". A host ought to use NTP ([RFC5905])
    or some similar protocol to synchronize its clocks to Coordinated
    Universal Time.
    *******************************************
    request_time    => $_SERVER['REQUEST_TIME']
    *******************************************
    The current value of the clock at the host at the time the request
    resulting in the stored response was made.
    *******************************************
    response_time        => ?
    *******************************************
    The current value of the clock at the host at the time the
    response was received.
    *******************************************
    A response's age can be calculated in two entirely independent ways:
    *******************************************
    1.the "apparent_age": response_time minus date_value, if the local
    clock is reasonably well synchronized to the origin server's
    clock. If the result is negative, the result is replaced by
    zero.
                    apparent_age = max(0, response_time - date_value);
    *******************************************
    2.the "corrected_age_value", if all of the caches along the
    response path implement HTTP/1.1. A cache MUST interpret this
    value relative to the time the request was initiated, not the
    time that the response was received.
    *******************************************
                    response_delay = response_time - request_time;
                   
                    corrected_age_value = age_value + response_delay;
    *******************************************
                    corrected_initial_age = max(apparent_age, corrected_age_value);
    *******************************************
    The current_age of a stored response can then be calculated by adding
    the amount of time (in seconds) since the stored response was last
    validated by the origin server to the corrected_initial_age.
    *******************************************
    resident_time = now - response_time;
    current_age = corrected_initial_age + resident_time;
    *******************************************
    Age             => current_age
    *******************************************
    
    
     
  7. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 676
    J'aime reçus:
    39
    Bonjour UsagiYojimbo

    Maintenant je met "response time" à Date + 1 sec.

    Je calcule tout en UTC.

    J'ai tout, sauf le calcul de la freshness time en fonction de LastModified et Date.

    Il semblerait que : freshness_time = (Date - LastModified ) / 10.

    Si ceci est < max-age server, c'est fresh sinon stale.

    Comment expliquer ce "/ 10 " ?

    Avec un max-age=3600 celà fait 36000 secondes ?

    Merci beaucoup.
     
  8. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 676
    J'aime reçus:
    39
    Rebonjour

    Voici ce que çà donne sans ETag activé ni IfModifiedSince.

    Le Cache-Control server max-age=300.

    Je ne traite pas Expires.

    Tout le reste est traité, y compris non activé.

    J'ai un problème ( voir message précédent ).

    Merci beaucoup de votre aide.


    Code:
            ******************************************
                CLIENT HEADERS
            ******************************************
            Expires: 
            Cache-Control: max-age=0
            ******************************************
            Methode : 1
            $age_value = 0
            $request_date = Sat, 01 Oct 2022 12:40:34 GMT
            $response_date = Sat, 01 Oct 2022 12:40:35 GMT
            $delta_apparent_age = 1
            $apparent_age = 1
            $response_delay = 1
            $corrected_age_value = 1
            $corrected_initial_age = 1
            $resident_time = 1
            next $current_age = 2
            header("HTTP/1.1 All Done 200 OK")
            ******************************************
                SERVER HEADERS
            ******************************************
            Date: Sat, 01 Oct 2022 12:40:34 GMT
            Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7
            Accept-Encoding: gzip, deflate, br
            Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
            User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36
            Connection: keep-alive
            Host: localhost
            Cache-Control: max-age=300
            Content-Location: "http://localhost/"
            Last-Modified: Sat, 01 Oct 2022 12:40:34 GMT
            Etag: "d41d8cd98f00b204e9800998ecf8427e"
            IfModifiedSince: Sat, 01 Oct 2022 12:33:15 GMT
            IfNoneMatch: "d41d8cd98f00b204e9800998ecf8427e"
            Vary: Accept-Encoding
            Age: 2
            Content-Length: 21845
            ******************************************
            ******************************************
                CLIENT HEADERS
            ******************************************
            Expires: 
            Cache-Control: max-age=0
            ******************************************
            Methode : 1
            $age_value = 61
            $request_date = Sat, 01 Oct 2022 12:41:35 GMT
            $response_date = Sat, 01 Oct 2022 12:41:36 GMT
            $delta_apparent_age = 1
            $apparent_age = 1
            $response_delay = 1
            $corrected_age_value = 62
            $corrected_initial_age = 62
            $resident_time = 1
            next $current_age = 63
            ******************************************
                SERVER HEADERS
            ******************************************
            Date: Sat, 01 Oct 2022 12:41:35 GMT
            Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7
            Accept-Encoding: gzip, deflate, br
            Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
            User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36
            Connection: keep-alive
            Host: localhost
            Cache-Control: max-age=300
            Content-Location: "http://localhost/"
            Last-Modified: Sat, 01 Oct 2022 12:40:34 GMT
            Etag: "6c1199c2b240ca261125c92a0ae3b1a7"
            IfModifiedSince: Sat, 01 Oct 2022 12:40:34 GMT
            IfNoneMatch: "d41d8cd98f00b204e9800998ecf8427e"
            Vary: Accept-Encoding
            Age: 63
            ******************************************
            header("HTTP/1.1 Cache-Control 304 Not Modified")
    
    
    
     
  9. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 676
    J'aime reçus:
    39
    Rebonjour

    J'ai deux questions à poser.

    Pratiquement tout est fait dans mon add-on de cache HTTP à la librairie de cache HTML de noren.

    Ma première question :

    Quand le Cache-Control client est à no-store, il ne faut pas mettre en cache ?

    Quand c'est no-cache, il ne faut pas lire le cache ?

    Ma deuxième question :

    J'ai vu sur le net que lors d'un "304 Not Modified", il ne fallait pas rendre tous les headers.

    C'est sûr pour le "Content-Length" qui ne doit pas y être.

    Mais y a-t-il d'autres headers à ne pas mettre ?

    Merci beaucoup.
     
  10. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 676
    J'aime reçus:
    39
    Une question théorique

    A propos des caches HTTTP et des "304 Not Modiified" :

    S'il y a des nonces dans le HTML, les nonces restent-ils constants lors des lectures dans le cache ?

    Merci.
     
  11. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 676
    J'aime reçus:
    39
    Problème résolu

    Je conserve les nonces par client et request_uri.

    Je les update en cas de "200 OK".

    Chaque fichier a un nom code client anonyme.

    Dans chaque fichier, chaque ligne est de la forme : id_request_uriXXYnonce

    Mon dossier/répertoire est en partittion tmpfs.

    Je vais tester/retester puis mettre en ligne.

    Bien à vous.
     
  12. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 676
    J'aime reçus:
    39
    Rebonjour

    Celà a l'air de marcher, je tiens compte de tous les headers, sauf Expires.

    Dans la documentation, il est dit qu'il ne faut pas ( au niveau navigateur ) prendre en compte le Expires si le Cache-Control figure parmi les headers server.

    Est-ce que c'est vrai, ou faut-il tenir compte côté serveur du Expires, si le Cache-Control ne déclenche pas une '304 Not Modified" ?

    Pour mémoire, voici la logique :

    Tant que pas 304, critère suivant :

    Critères :

    - Cache-Control,

    - ETag & NotModifiedSince,

    - ETag,

    - NotModifiedSince,

    - LastModified.

    => "200 OK".


    Dois-je ajouter le critère Expires ?

    Merci beaucoup.
     
  13. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 676
    J'aime reçus:
    39
    Bof...

    J'ai entièrement renoncé à mon projet de cache HTTP.

    En fait, le cache du navigateur souvent ne répond pas ( vide ) celà donne des pages vides en 304.

    J'ai remis le cache HTML de noren.

    Merci beaucoup noren. ;)
     
  14. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 205
    J'aime reçus:
    365
  15. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 676
    J'aime reçus:
    39
    Une question...

    Quand un navigateur réagit aux headers serveur en gérant son cache et en envoyant les request headers au serveur, est-il possible pour le serrveur d'interpréter les headers clients **par programme**, et de simuler le comportement normal du serveur ?

    J'ai eu une erreur hier sur mon site qui venait probablement du fait que j"ignorais le "no-cache" du client, et que je voulais lui imposer de cacher la réponse.

    Ma question est : Le dialogue de headers entre client et serveur, entraîne-t-il nécessairement complètement le comportement du navigateur ?

    Le navigateur peut-il décider tout d'un coup de ne plus cacher une réponse, alors que les headers lui disent de le faire ?

    Merci aussi à Spout de s'abstenir d de ses malencontreuses moqueries.

    Amicalement.
     
  16. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 676
    J'aime reçus:
    39
    Rebonjour

    Je vais essayer de reproduire strictement toute la logique de l'algorithme du cache HTTP.

    J'avais oublié de mettre "Must Revalidate" en réponse.

    Le cache n 'était plus actif, la page était vide.

    Bien à vous.
     
  17. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    3 676
    J'aime reçus:
    39
    Bonjour

    Le header Cache-Control de la page d'accueil de https://www.webrankinfo.com, inclut :

    private, max-age=0, must-revalidate, no-cache, no-store

    Il comporte aussi le Expires, à une date antérieure à Date.

    Deux questions :

    - Pourquoi le must-revalidate si le cache est interdit ?

    - Si pas de cache, à quoi bon le Expires ?

    Merci beaucoup.
     
Chargement...
Similar Threads - $_SERVER[ REQUEST_TIME Forum Date
Google Analytics Referrals VS $_SERVER['HTTP_REFERER'] Google Analytics 10 Décembre 2013
Url rewritting: htaccess ou $_SERVER['REQUEST_URI'] URL Rewriting et .htaccess 8 Août 2012
$_SERVER['REMOTE_ADDR'] -> Sécurité ? Développement d'un site Web ou d'une appli mobile 2 Juin 2012
Problème envoi mots clés $_SERVER['HTTP_REFERER'] Administration d'un site Web 24 Mai 2012
$_SERVER['REMOTE_ADDR'] pas fiable ? Développement d'un site Web ou d'une appli mobile 31 Mars 2012
$_SERVER["RESQUEST_URI"] et URL Rewriting Débuter en référencement 18 Mars 2010
Codage dans $_SERVER['HTTP_REFERER'] Développement d'un site Web ou d'une appli mobile 22 Janvier 2010
$_SERVER['HTTP_REFERER'] inexistant depuis la racine ? Développement d'un site Web ou d'une appli mobile 23 Février 2009
$_SERVER['REQUEST_URI'] autres méthodes ? Développement d'un site Web ou d'une appli mobile 22 Avril 2008
$_SERVER['HTTP_REFERER'] sous ie apres url rewritting Développement d'un site Web ou d'une appli mobile 5 Octobre 2007
Probleme avec $_SERVER['REQUEST_URI'] de chez Online !! URL Rewriting et .htaccess 19 Septembre 2007
Aide a propos de if($_SERVER['HTTP_REFERER'] URL Rewriting et .htaccess 5 Août 2007
$_SERVER['REQUEST_URI'] dans formulaire Développement d'un site Web ou d'une appli mobile 28 Mai 2007
Comment utiliser la fonction $_SERVER['REMOTE_ADDR'] ? Développement d'un site Web ou d'une appli mobile 28 Mai 2007
[Resolu] Résultat d'un $_SERVER["REMOTE_ADDR"] dan Développement d'un site Web ou d'une appli mobile 27 Mai 2007
Question sur $_SERVER['REQUEST_URI'] Développement d'un site Web ou d'une appli mobile 3 Octobre 2006
Problème de test avec ereg sur $_SERVER['REQUEST_URI'] Développement d'un site Web ou d'une appli mobile 30 Mai 2006
$_SERVER['HTTP_COOKIE'] et $_COOKIES Développement d'un site Web ou d'une appli mobile 18 Février 2006
Fonction Include et Fonction $_SERVER['REQUEST_URI'] Développement d'un site Web ou d'une appli mobile 29 Août 2005
$_SERVER['REQUEST_URI'] -> est-elle toujours renseignée ? Développement d'un site Web ou d'une appli mobile 24 Août 2005