Index: xwiki-core/src/main/java/com/xpn/xwiki/XWiki.java =================================================================== --- xwiki-core/src/main/java/com/xpn/xwiki/XWiki.java (revision 9615) +++ xwiki-core/src/main/java/com/xpn/xwiki/XWiki.java (working copy) @@ -906,6 +907,14 @@ return Util.getFileContent(new InputStreamReader(is)); } + public Date getResourceLastModificationDate(String name) + { + if (getEngineContext() != null) { + return Util.getFileLastModifcationDate(getEngineContext().getRealPath(name)); + } + return new Date(); + } + public byte[] getResourceContentAsBytes(String name) throws IOException { InputStream is = null; Index: xwiki-core/src/main/java/com/xpn/xwiki/util/Util.java =================================================================== --- xwiki-core/src/main/java/com/xpn/xwiki/util/Util.java (revision 9615) +++ xwiki-core/src/main/java/com/xpn/xwiki/util/Util.java (working copy) @@ -762,4 +762,8 @@ return result.toString(); } + public static Date getFileLastModifcationDate(String path) { + File f = new File(path); + return (new Date(f.lastModified())); + } } Index: xwiki-core/src/main/java/com/xpn/xwiki/web/SkinAction.java =================================================================== --- xwiki-core/src/main/java/com/xpn/xwiki/web/SkinAction.java (revision 9615) +++ xwiki-core/src/main/java/com/xpn/xwiki/web/SkinAction.java (working copy) @@ -33,6 +33,7 @@ import java.io.IOException; import java.util.Date; +import java.util.Arrays; /** *

@@ -195,11 +196,21 @@ data = context.getWiki().getResourceContentAsBytes(path); if (data != null && data.length > 0) { String mimetype = context.getEngineContext().getMimeType(filename.toLowerCase()); + Date modification = null; if (isCssMimeType(mimetype) || isJavascriptMimeType(mimetype)) { - data = context.getWiki().parseContent(new String(data), context).getBytes(); + byte[] newdata = context.getWiki().parseContent(new String(data), context).getBytes(); + if (Arrays.equals(newdata, data)) { + modification = context.getWiki().getResourceLastModificationDate(path); + } + else { + modification = new Date(); + data = newdata; + } } - - setupHeaders(response, mimetype, new Date(), data.length); + else { + modification = context.getWiki().getResourceLastModificationDate(path); + } + setupHeaders(response, mimetype, modification, data.length); try { response.getOutputStream().write(data); } catch (IOException e) {