web-dev-qa-db-fra.com

Puis-je définir Cache-Control dans le fichier .htaccess pour une partie spécifique d'un document (juste une section du <body>)

J'ai remarqué, en utilisant Google Page Speed ​​Insights , que si je structurais mon code HTML de manière à charger le contenu critique au-dessus du pli en premier, ma page améliorerait les performances - et elle fonctionnait Mobile 71/100 - Pc 87/100).

Ma question est la suivante: avec le mod_header d'Apaches activé et sans contenu dans ma balise <head>, est-il possible de définir l'expiration des données pour toute partie de ma page (dans le corps, par exemple)?

2
fiskolin

L'en-tête d'expiration est lié à la page, pas à des fragments.

Passons en revue les bases.

Vous envoyez du code HTML au navigateur, le tout ou un flux, n’a aucune importance pour cet exemple.

Le navigateur le reçoit et commence à l'analyser. En même temps, une fois que l'analyse a commencé, tous les autres fichiers liés sont appelés, tels que images, css, js, etc. Certaines connexions parallèles sont établies et certains des fichiers liés commencent à arriver; le navigateur les détecte et assigne le bon analyseur/rendu pour travailler avec le fichier.

Si le fichier est une image, il sera affiché à l'écran. s'il s'agit d'un CSS, l'analyseur commence à appliquer les règles au code HTML reçu et affiche/modifie la présentation du contenu. S'il s'agit d'un script, il le lit à la recherche d'un déclencheur. S'il n'y en a aucun, le fichier reste en mémoire. S'il existe un déclencheur, l'action/la fonction appelée commence à fonctionner.

Au-dessus du pli est un terme qui fait référence au contenu qui est affiché en premier sur l'écran, il provient des journaux.

CSS et JS ne sont pas au-dessus du pli, ils sont asynchrones ou parallèles au rendu du contenu; CSS affecte tout le document, JS affecte tout ce pour quoi il a été programmé.

Si vous voulez contrôler le cache des fichiers CSS et JS, vous pouvez utiliser des règles sur votre fichier .htaccess, comme ceci

<FilesMatch "\.(css|js)$">
    Header set Cache-Control "max-age=31536000, public, s-maxage=31536000"
    Header set Pragma "cache"
</FilesMatch>

ou comme ça

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 1 month"
    ExpiresByType application/x-javascript "access plus 1 month"
    ExpiresByType text/css "access plus 1 month"
</IfModule>

il est impossible d'affecter une partie du contenu d'une page, sauf si ce contenu (fichier HTML) est inséré sous forme d'iframe; Dans ce cas, vous affectez toujours un fichier différent, mais la dernière page peut sembler ne contenir qu'une partie des règles de cache.

2
PatomaS