As suggested by others. This behavior is typically used to avoid caching issues when invoking a page that returns dynamic content data.
For example, let's say you have a page that has current user information, such as "mysite.com/CurrentUserData". Now, when you first call this page, user data will be returned as expected, but depending on the time and cache settings, the second call may return the same data - even if the expected data can be updated.
The main reason for caching is, of course, optimizing the speed of frequent requests. But in the case when this is not required, adding a random value as a parameter to the query string is known to be a widely used solution.
There are other ways around this problem. For example, if you were making an Ajax request with javascript / jQuery. You can set the cache to false in your call ...
$.ajax({url: 'page.html', cache: false});
You can also change it for all page calls when loading a document using ...
$.ajaxSetup({cache: false}});
If you were to run an MVC application, you can even disable caching in management methods with an attribute like this ...
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")] public ActionResult NonCacheableData() { return View(); }
(thanks to quick copy and paste from here )
I dare to say that in IIS there are also settings that you could apply to get the same effect, although I have not been this far.