Link to home
Start Free TrialLog in
Avatar of Rocking
Rocking

asked on

append time in js file

hi,

how to append the file modification date & time in the javascript file?
test.js is modified on 12-july-2008 then it should append this date(format no bar)
again test.js is modified on 12-aug-2009 it should append this date.


<script src"./test.js?version=modificationtime">

something like below in jsp

http://www.codeproject.com/Articles/203288/Automatic-JS-CSS-versioning-to-update-browser-cach
Avatar of Ray Paseur
Ray Paseur
Flag of United States of America image

Do you have a server-side scripting language available, like PHP or ASP.net?
Avatar of leakim971
Replace you line with the following :
<script>
var modificationtime =  new Date().getTime();
var script = document.createElement("script");
script.async = false;
script.charset = "utf8",
script.src = "./test.js?version=" + modificationtime;
var head = document.head || document.getElementsByTagName("head")[0] || document.documentElement;
head.insertBefore( script, head.firstChild );
</script>

Open in new window

Avatar of Rocking
Rocking

ASKER

var modificationtime =  new Date().getTime();

this code will verytime return current date and time,what i need is the date and time should only change when file is modified.
i need file modification date and time....
without server, it's not possible until you set this value somewhere and download it with ajax...
Avatar of Rocking

ASKER

that what i need a common configurable program or entry in tomcat?
any sample code or link would be helpful
Let me try this one again:  Do you have a server-side scripting language available, like PHP or ASP.net?
Avatar of Rocking

ASKER

It's servlet at server side
<script src"./test.js?version=modificationtime">
Are these lines all in JSP files ?
Avatar of Rocking

ASKER

yes
How many web pages do you have in your web app?
 Could you rewrite each URL in the src attribute for each script tag?  I am suggesting something like
 <script src"./test.js?version=<m:modTime file="test.js" />">
where I have substituted  modificationtime with a custom tag.  The custom tag could get the last modified time for the file. It is easy to create a custom file using "tag files". I could post some demonstration code tomorrow. Just tell us about your file structure.
Is test.js in the same folder as your JSP?
Would  
<script src"test.js?version=modificationtime">  
work just as well? Notice the change in the URL.
Here is how to do this on the client side using jQuery ajax

Live Demo

function getLast(fileName) {
    $.ajax({
        type: "HEAD",
        async: true,
        url: fileName,
        success: function(message,text,response){
           var lm = response.getResponseHeader('Last-modified');
           if (lm) {
             $("#res").text(lm +"("+new Date(lm).getTime()+")");
           }
        }

    });
}

Open in new window

Here are a couple more ideas.
Does your Tomcat use Java 1.7 or 1.8 ? If so, there is WatchService  
http://docs.oracle.com/javase/7/docs/api/java/nio/file/WatchService.html   
 that might come in handy.
 Could you rewrite each URL in the src attribute for each script tag?  I am suggesting something like
 <script src"./test.js?version=${applicationScope.testmodificationtime}">
 You could use the  WatchService to keep the application-scoped variables up to date. The variables could be set in a ServletContextListener.

Alternatively, if WatchService is too complicated, then use A TimerTask to periodically check for file changes. It could keep the  application- scoped variables up to date.
SOLUTION
Avatar of rrz
rrz
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Rocking

ASKER

You could use the  WatchService to keep the application-scoped variables up to date.

Any sample code of above would be helpful
ASKER CERTIFIED SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial