众所周知,Internet Explorer会积极地缓存ajax调用,而所有其他浏览器每次都会重新获取数据。这通常是不好的:我从未遇到过我希望Ajax不联系服务器的情况。Firefox,Safari和其他浏览器都知道这一点,并且不会缓存ajax调用。
为了防止IE缓存,您必须执行以下操作之一:
?time=[timestamp]
)我更喜欢设置一个无缓存头。这是正确的方法:它告诉所有浏览器不要缓存,这正是您想要的。查询字符串方法用永远无法检索的内容填充浏览器的缓存,从而为合法的缓存内容留出了更少的空间。POST方法破坏了HTTP:POST用于修改数据。
在Grails中,为所有ajax请求自动发送请勿缓存标头的最佳方法是什么?我不想修改任何控制器,所以我认为必须有一个很酷的过滤器技巧或类似的东西。
谢谢!
这就是我最终想出的。大多数JavaScript库-包括jQuery,YUI,Mootools和Prototype- X-Requested-With: XmlHttpRequest
在每个ajax请求中发送标头。
对于发送此标头的任何请求,您都可以发送回响应标头,告诉它不要缓存。
下面是一个Grails过滤器,该过滤器可防止缓存以X-Requested-With: XmlHttpRequest
标头标识自己的ajax请求:
// put this class in grails-app/config/
class AjaxFilters {
def filters = {
all(controller:'*', action:'*') {
before = {
if (request.getHeader('X-Requested-With')?.equals('XMLHttpRequest')) {
response.setHeader('Expires', '-1')
}
}
}
}
}
有些人更喜欢使用Cache-Control:no-cache标头而不是过期。区别在于:
通过添加此过滤器,您可以使Internet Explorer的缓存与Firefox和Safari所做的一致。
顺便说一句,我在IE8和IE9上遇到了缓存问题。我认为IE7和IE6也存在问题。
我们已经配置nginx服务器添加缓存控制头到公共和到期时间到1个月。但是当我们从浏览器发出请求时,客户端正在添加缓存控制:无缓存头。正因为如此,它每次都是新鲜下载内容,而不是提供缓存版本。 我怎样才能缓存静态文件? 如果我从终端触发请求,服务器添加的缓存控制标头在响应标头中可见。
问题内容: 会话问题变得非常烦人。每次尝试在特定页面上启动会话时,都会出现以下错误: 使用此代码: 是否暗示我已经使用过?香港专业教育学院环顾四周,但没有什么可以真正解决这个问题。 谢谢 问题答案: “已发送标头”表示您的PHP脚本已经发送了HTTP标头,因此它现在无法对其进行修改。 在致电之前,请检查您是否未发送任何内容。更好的是,只需将您要做的第一件事放在PHP文件中(因此,绝对要放在所有HT
问题内容: 我有一个Ajax调用,它可以更新数据库中的5,000条记录,因此需要很多时间。我有一个Ajax“正在加载图像”,它表明正在发生某些事情,但是我正在寻找一种更好的方式来显示“正在更新5000中的50 .....”,“正在更新5000中的200”或类似的东西。 在Ajax / jQuery中不做5000篇不同文章的最佳方法是什么? 问题答案: 我认为最好是使用Comet。 在Comet样式
当多次调用保存时,它可以工作,但需要几分钟。 在我的理解中,保存执行。 因此,如果我可以将放在一起,则需要更短的时间。 有没有这方面的做法?
本文向大家介绍ajax的定时调用每5秒调用一次,包括了ajax的定时调用每5秒调用一次的使用技巧和注意事项,需要的朋友参考一下
我正在使用socket.io和node.js/mongoDB的应用程序,它将在和之间发送实时分析 假设司机沿着一条路径移动,每次位置改变,他都会将自己的位置发送给特定家长的列表。 我可以想出一种实现这种功能的方法 1-我创建了两个数组 无论何时连接用户/驱动程序,我都会这样做 现在,如果驾驶员必须发出位置变化,他将执行以下操作: 我想知道这种方法是否更好?在MongoDB中将用户保存为online