web-dev-qa-db-fra.com

Ajouter les en-têtes Expires

Add Expires headers
There are 21 static components without a far-future expiration date.

    http://static.doers.lk/examples-offline.css
    http://static.doers.lk/kendo.common.min.css
    http://static.doers.lk/kendo.default.min.css
    http://static.doers.lk/style.css
    http://static.doers.lk/jquery.min.js
    http://static.doers.lk/kendo.web.min.js
    http://static.doers.lk/console.js
    http://static.doers.lk/Sprite.png
    https://fbexternal-a.akamaihd.net/safe_image.php?...
    https://fbexternal-a.akamaihd.net/safe_image.php?...
    https://fbexternal-a.akamaihd.net/safe_image.php?...
    https://fbexternal-a.akamaihd.net/safe_image.php?...
    https://fbexternal-a.akamaihd.net/safe_image.php?...
    https://fbexternal-a.akamaihd.net/safe_image.php?...
    https://fbexternal-a.akamaihd.net/safe_image.php?...
    https://fbexternal-a.akamaihd.net/safe_image.php?...
    https://fbexternal-a.akamaihd.net/safe_image.php?...
    https://fbexternal-a.akamaihd.net/safe_image.php?...
    https://fbexternal-a.akamaihd.net/safe_image.php?...
    https://fbexternal-a.akamaihd.net/safe_image.php?...
    http://static.doers.lk/favicon.PNG

Lorsque je teste le site en utilisant yahoo YSLOW, il est indiqué ci-dessus massage.Alors, je ne sais pas comment ajouter des en-têtes expirés. Toute aide serait appréciée?

42
sami

Le moyen le plus simple d’ajouter ces en-têtes est un fichier .htaccess qui ajoute une configuration à votre serveur. Si les actifs sont hébergés sur un serveur que vous ne contrôlez pas, vous ne pouvez rien y faire.

Notez que certains hébergeurs ne vous laisseront pas utiliser les fichiers .htaccess. Vérifiez donc leurs conditions si cela ne semble pas fonctionner.

Le projet HTML5Boilerplate possède un excellent fichier .htaccess qui couvre les paramètres nécessaires. Voir la partie pertinente du fichier dans leur répertoire Github

Ce sont les bits importants

# ----------------------------------------------------------------------
# Expires headers (for better cache control)
# ----------------------------------------------------------------------

# These are pretty far-future expires headers.
# They assume you control versioning with filename-based cache busting
# Additionally, consider that outdated proxies may miscache
# www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/

# If you don't use filenames to version, lower the CSS and JS to something like
# "access plus 1 week".

<IfModule mod_expires.c>
  ExpiresActive on

# Your document html
  ExpiresByType text/html "access plus 0 seconds"

# Media: images, video, audio
  ExpiresByType audio/ogg "access plus 1 month"
  ExpiresByType image/gif "access plus 1 month"
  ExpiresByType image/jpeg "access plus 1 month"
  ExpiresByType image/png "access plus 1 month"
  ExpiresByType video/mp4 "access plus 1 month"
  ExpiresByType video/ogg "access plus 1 month"
  ExpiresByType video/webm "access plus 1 month"

# CSS and JavaScript
  ExpiresByType application/javascript "access plus 1 year"
  ExpiresByType text/css "access plus 1 year"
</IfModule>

Ils ont documenté ce que fait ce fichier , le plus important est que vous deviez renommer vos fichiers CSS et Javascript à chaque modification, car les navigateurs de vos visiteurs ne les vérifieront plus pendant un an, une fois mis en cache.

59
pixelistik

essayez cette solution et cela fonctionne bien pour moi 

## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>

<IfModule mod_headers.c>
  <FilesMatch "\.(js|css|xml|gz)$">
    Header append Vary: Accept-Encoding
  </FilesMatch>
</IfModule>

<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml text/x-js text/js 
</IfModule>

## EXPIRES CACHING ##
9
user2164884

Vous pouvez les ajouter à votre fichier htaccess ou à votre configuration vhost.

Voir ici: http://httpd.Apache.org/docs/2.2/mod/mod_expires.html

Mais à moins que vous ne possédiez ces domaines, ils relèvent de votre contrôle.

3
Sorin Trimbitas

Dans ASP.NET, il existe un objet similaire. Vous pouvez utiliser la mise en cache de portions dans WebFormsUserControls afin de mettre en cache les objets d’une page pendant un certain temps et d’économiser les ressources du serveur. Ceci est également connu comme la mise en cache de fragments. 
Si vous incluez ce code en haut de votre contrôle utilisateur, une version du contrôle stockée dans le cache de sortie pendant 150 secondes . Vous pouvez créer votre propre contrôle qui contiendrait un en-tête d'expiration pour une ressource spécifique de votre choix. 

<%@ OutputCache Duration="150" VaryByParam="None" %>

Cet article explique complètement: Mise en cache de portions d’une page ASP.NET

0
Mohammad Shadman
<IfModule mod_expires.c>
    # Enable expirations
    ExpiresActive On 

    # Default directive
    ExpiresDefault "access plus 1 month"

    # My favicon
    ExpiresByType image/x-icon "access plus 1 year"

    # Images
    ExpiresByType image/gif "access plus 1 month"
    ExpiresByType image/png "access plus 1 month"
    ExpiresByType image/jpg "access plus 1 month"
    ExpiresByType image/jpeg "access plus 1 month"

    # CSS
    ExpiresByType text/css "access plus 1 month"

    # Javascript
    ExpiresByType application/javascript "access plus 1 year"
</IfModule>
0
user8031347