append time in js file

Rocking
Rocking used Ask the Experts™
on
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
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Most Valuable Expert 2011
Top Expert 2016

Commented:
Do you have a server-side scripting language available, like PHP or ASP.net?
leakim971Multitechnician
Top Expert 2014

Commented:
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

Author

Commented:
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....
Should you be charging more for IT Services?

Do you wonder if your IT business is truly profitable or if you should raise your prices? Learn how to calculate your overhead burden using our free interactive tool and use it to determine the right price for your IT services. Start calculating Now!

leakim971Multitechnician
Top Expert 2014

Commented:
without server, it's not possible until you set this value somewhere and download it with ajax...

Author

Commented:
that what i need a common configurable program or entry in tomcat?
any sample code or link would be helpful
Most Valuable Expert 2011
Top Expert 2016

Commented:
Let me try this one again:  Do you have a server-side scripting language available, like PHP or ASP.net?

Author

Commented:
It's servlet at server side

Commented:
<script src"./test.js?version=modificationtime">
Are these lines all in JSP files ?

Author

Commented:
yes

Commented:
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.
Michel PlungjanIT Expert
Top Expert 2009

Commented:
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

Commented:
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.
Commented:
Here is the custom tag solution. If your web app gets a lot of traffic and the script files don't change that often, then maybe my other ideas would be better. Anyway, here is the  JSP.
<%@ taglib tagdir="/WEB-INF/tags" prefix="m" %>
testing
 <script src"test.js?version=<m:modTime file="test.js" />">

Open in new window

 In your web app's WEB-INF  folder, create a folder named tags.  Create a file called  modTime.tag  with the following  content and put it into the tags folder.
<%@ tag import="java.io.*" %><%@ attribute name="file" required="true" %><%
File f = new File(application.getRealPath(file));
out.print(f.lastModified());%>

Open in new window

Don't change the formatting. If you use standard formatting in the tag file, then the  source code in the browser won't look pretty. You could change the names I have used(m and modTime) to suit yourself.

Author

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

Any sample code of above would be helpful

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial