2009-12-29 2 views
0

Dans mon application PHP, je suis déjà Autoversioning avec succès mon contenu statique (CSS, JS et images), de sorte que mes URL ressembler à quelque chose comme ceci:liens d'image autoversioning INSIDE fichiers css et javascript?

<link rel="stylesheet" href="http://example.com/include/css/global.1262063295.css" type="text/css" media="all" /> 
<img src="http://example.com/images/logo.1254284339.png" alt="" /> 

Les 10 chiffres des numéros de version sont tout simplement la modification de l'horodatage Unix des fichiers individuels. Ceci est réalisé avec mod_rewrite et du code PHP de base (voir http://particletree.com/notebook/automatically-version-your-css-and-javascript-files/). Jusqu'ici tout va bien.


CEPENDANT, voici mon problème.

Dans mon fichier CSS, j'ai des liens vers de nombreuses images de fond:

background: url("http://example.com/images/dice.gif") no-repeat right top; 

De même dans mes fichiers JS, je référence différentes images aussi bien.

Depuis que je veux tous les accès à mon contenu statique (css, js, images) pour avoir le numéro de version inclus, est-il possible de mettre à jour automatiquement les liens INSIDE un Css ou un fichier .js de sorte que le ci-dessus css ressemblerait à ceci:

background: url("http://example.com/images/dice.1234567893.gif") no-repeat right top; 

Comment cela peut-il être fait automatiquement?

Merci, Konstantin

Répondre

4

Vous pouvez servir vos fichiers CSS et JS par PHP ainsi. Par exemple, renommer global.css en global.css.php. Assurez-vous d'envoyer à corriger les en-têtes de réponse HTTP.

<?php // global.css.php 
header('Content-Type:text/css; charset:utf-8'); 
include($_SERVER['DOCUMENT_ROOT'].'/path/to/autoVer.php'); ?> 

#cssrule { background: url(<?php autoVer('/img/background.gif') ?>); }