& # 8220; Expire & # 8221; dans l'en-tête http pour le contenu statique? comment

StackOverflow https://stackoverflow.com/questions/102215

  •  01-07-2019
  •  | 
  •  

Question

Quel est le meilleur moyen d'ajouter " Expires " dans l'en-tête http pour le contenu statique? par exemple. images, css, js

Le serveur Web est IIS 6.0; la langue est classique ASP

Était-ce utile?

La solution

Vous pouvez essayer quelque chose comme ceci:

@ECHO OFF 
REM ---------------------------------------------------------------------------
REM Caching - sets the caching on static files in a web site
REM syntax 
REM     Caching.CMD 1 d:\sites\MySite\WWWRoot\*.CSS
REM 
REM   %1 is the WebSite ID
REM   %2 is the path & Wildcard - for example, d:\sites\MySite\WWWRoot\*.CSS
REM   _adsutil is the path to ADSUtil.VBS
REM ---------------------------------------------------------------------------

SETLOCAL

SET _adsutil=D:\Apps\Scripts\adsutil.vbs

FOR %%i IN (%2) DO (
  ECHO Setting Caching on %%~ni%%~xi
  CSCRIPT %_adsutil% CREATE W3SVC/%1/root/%%~ni%%~xi "IIsWebFile"
  CSCRIPT %_adsutil% SET    W3SVC/%1/root/%%~ni%%~xi/HttpExpires "D, 0x69780"
  ECHO.
)

Ce qui définit la valeur de mise en cache de chaque fichier CSS d'une racine Web sur 5 jours, puis l'exécutez comme suit:

Caching.CMD 1 \site\wwwroot\*.css
Caching.CMD 1 \site\wwwroot\*.js
Caching.CMD 1 \site\wwwroot\*.html
Caching.CMD 1 \site\wwwroot\*.htm
Caching.CMD 1 \site\wwwroot\*.gif
Caching.CMD 1 \site\wwwroot\*.jpg

Un peu douloureux, mais réalisable.

BTW - pour obtenir la valeur de HttpExpires, définissez-la dans l'interface graphique, puis exécutez

AdsUtil.vbs ENUM W3SVC/1/root/File.txt

pour obtenir la valeur réelle dont vous avez besoin

Autres conseils

Je pense que c'est ce que vous recherchez, c'est l'expiration du contenu sous les en-têtes HTTP du gestionnaire IIS. J'utilise le modèle consistant à coller du contenu statique dans un dossier tel que ~ / Resources et à définir la date d'expiration de ce dossier pour une durée de vie beaucoup plus longue que celle du reste de l'application.

Voici un lien vers l'article complet: IIS 6.0 F1: Propriétés du site Web - Onglet En-têtes HTTP

Pour les autres utilisateurs de Google: cela ne fonctionnera pas dans iis6 , mais à partir de 7

.

Dans votre configuration web:

<staticContent>
  <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
</staticContent>

dans l’administrateur IIS, vous pouvez le définir pour chaque type de fichier ou le faire (pour les fichiers dynamiques comme aspx) dans le code. Une fois que vous l’avez configuré, vous devez vérifier les en-têtes générés avec un outil tel que Mozilla firefox + plug-in d’entêtes dynamiques. Vous pouvez également utiliser un outil Web tel que http://www.httpviewer.net/

Je ne sais pas si c'est ce que vous recherchez, mais cela empêche mes pages d'être mises en cache.

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-store">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
<META HTTP-EQUIV="Cache-Control" CONTENT="max-age=0">

Je les ai tirées d'un article en ligne pour lequel je n'ai plus de référence.

Solution épouvantable, la première commande à créer avec adsutil échouera avec l'erreur -2147024713 (0x800700B7) car les fichiers que vous essayez de créer existent déjà.

Merci.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top