看起来,如果我使用$.get()加载动态内容,结果会缓存在浏览器中。

在QueryString中添加一些随机字符串似乎解决了这个问题(我使用new Date(). tostring()),但这感觉像是一个黑客。

还有别的办法吗? 或者,如果唯一字符串是实现这一点的唯一方法,除了new Date()还有其他建议吗?


当前回答

也许你应该看看$.ajax()(如果你使用的是jQuery,它看起来就像jQuery)。 看一下:http://docs.jquery.com/Ajax/jQuery.ajax#options和选项“缓存”。

另一种方法是研究如何在服务器端缓存内容。

其他回答

添加标题

headers: {
                'Cache-Control':'no-cache'
            }

将Math.random()追加到请求url

除了给出的优秀答案,还有一个小小的补充:如果您正在为没有javascript的用户运行非ajax备份解决方案,那么无论如何您都必须使服务器端头正确。这不是不可能的,尽管我理解那些放弃它的人;)

我相信还有另一个关于SO的问题会给你全套合适的标题。我不完全相信老鼠的回答涵盖了所有的基础100%。

如果你正在使用ie9,那么你需要在你的控制器类定义前使用以下代码:

[OutputCache(NoStore = true, duration = 0, VaryByParam = “*”)]

公共类TestController:控制器

这将阻止浏览器缓存。

有关此连结的详情: http://dougwilsonsa.wordpress.com/2011/04/29/disabling-ie9-ajax-response-caching-asp-net-mvc-3-jquery/

实际上这解决了我的问题。

用POST请求代替GET请求怎么样? (无论如何你应该……)