所有!
为什么某些网络应用程序使用http-get参数“& rnd =”?它的目的是什么? 这个标签解决了哪些问题?
答案 0 :(得分:7)
这可能是为了确保页面/图像/不是从用户的缓存中获取的内容。如果链接每次都不同,那么浏览器将从服务器而不是从缓存中获取它,确保它是最新版本。
也可以通过网站跟踪人们的进度。最好用一个小故事解释:
我们所能做的只是建议可能性。没有一个标准的理由将rnd =放在URL中,如果没有看到服务器软件,我们无法知道网站设计者的动机。
答案 1 :(得分:6)
Internet Explorer和其他浏览器将读取图像URL,下载图像并将其存储在缓存中。
如果您的应用程序要定期更新图像,并且您希望用户看不到缓存的图像,则每次都需要URL唯一。
因此,添加随机字符串可确保它是唯一的,并且每次都会下载到缓存中。
答案 2 :(得分:4)
它几乎总是用于缓存破坏。
答案 3 :(得分:2)
正如其他人所建议的那样。当您调用返回动态内容数据的页面时,通常会使用此类行为来避免缓存问题。
例如,假设您有一个页面可以获取一些当前用户信息,例如“mysite.com/CurrentUserData”。现在,在第一次调用此页面时,将按预期返回用户数据,但根据时间和缓存设置,第二次调用可能会返回相同的数据 - 即使预期数据可能已更新。
缓存的主要原因当然是优化频繁请求的速度。但是在不需要这种情况的情况下,添加随机值作为查询字符串参数是众所周知的解决方案。
然而,还有其他方法可以解决这个问题。例如,如果您使用javascript / JQuery执行Ajax请求。您可以在通话中将缓存设置为false ...
$.ajax({url: 'page.html', cache: false});
您还可以使用...
更改文档加载时的所有页面调用$.ajaxSetup({cache: false}});
如果您要执行MVC应用程序,您甚至可以使用类似的属性禁用控件操作方法的缓存...
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public ActionResult NonCacheableData()
{
return View();
}
(感谢来自here的快速复制和粘贴)
我敢说IIS中还有一些设置可以用来获得相同的效果 - 尽管我还没有那么远。