Javascript 我的Grails应用程序反复对相同的图像发出http get请求(js驱动的时钟)。我需要做什么才能使它不';你不能那样做吗?

Javascript 我的Grails应用程序反复对相同的图像发出http get请求(js驱动的时钟)。我需要做什么才能使它不';你不能那样做吗?,javascript,grails,Javascript,Grails,我有一个Grails应用程序(2.0 RC1),它使用一个由图像组成的时钟来显示时间(包括秒)。时钟是一个简单的JavaScript函数,它获取时间,然后更新图像源以显示正确的图像。整个应用程序和其中的时钟工作正常 我试图解决的问题是,每次时钟更新(即每秒更新一次)映像源时,都会向服务器发送http get请求,而不是使用缓存的映像 当页面加载到Image()对象中时,图像将被预缓存。然后,该函数计算时间并更新图像,如下所示: document.getElementById('hour1').s

我有一个Grails应用程序(2.0 RC1),它使用一个由图像组成的时钟来显示时间(包括秒)。时钟是一个简单的JavaScript函数,它获取时间,然后更新图像源以显示正确的图像。整个应用程序和其中的时钟工作正常

我试图解决的问题是,每次时钟更新(即每秒更新一次)映像源时,都会向服务器发送http get请求,而不是使用缓存的映像

当页面加载到Image()对象中时,图像将被预缓存。然后,该函数计算时间并更新图像,如下所示:

document.getElementById('hour1').src = eval('window.' + 'num' + hour1 + '.src')
其中“num”+hour1是要显示的Image()对象的名称。gsp中的元素是img标签


我花了几个小时寻找答案,但没有结果。。。我必须使用“缓存资源”插件才能获得缓存吗?如果是这样,有人能告诉我在这种情况下如何使用它吗?我试过了,但还没能让它起作用…

首先,不要像那样使用
eval()
。将您的
eval()
替换为:

window["num" + hour1].src

其次,您的浏览器将发送GET请求,服务器应以304-Not-Modified响应,这将导致浏览器使用缓存的图像。您的浏览器是为每个请求提供图像服务,还是发送304状态码?

首先,不要这样使用
eval()。将您的
eval()
替换为:

window["num" + hour1].src

其次,您的浏览器将发送GET请求,服务器应以304-Not-Modified响应,这将导致浏览器使用缓存的图像。您的浏览器是为每个请求提供图像服务,还是发送304状态码?

感谢您的快速响应!从我在Firebug中看到的响应是302(对不起,不完全确定我是否正确使用了它)。有趣的是,非grails应用程序中的同一个javascript不会发送常量请求事实上,是的,只是没有那么频繁。对不起,我真的不知道我在说什么。。。有没有办法阻止所有这些请求进入服务器?这才是我真正想要实现的。(感谢您提供有关eval()用法的提示。)302是重定向状态。如果您更改为直接使用重定向到的url,可能会解决您的问题。我不太熟悉Grails。。。可能是修改了URL吗?再看看,大多数响应实际上是200个OK响应,只有一些是302个响应。所以它似乎每次都在为图像服务。从到目前为止我在Grails和缓存中发现的情况来看,我明白它并不是开箱即用的。看起来我需要更多地阅读这篇文章,这样我才能真正理解到底发生了什么,并更多地查看“缓存资源”插件。感谢您的快速响应!从我在Firebug中看到的响应是302(对不起,不完全确定我是否正确使用了它)。有趣的是,非grails应用程序中的同一个javascript不会发送常量请求事实上,是的,只是没有那么频繁。对不起,我真的不知道我在说什么。。。有没有办法阻止所有这些请求进入服务器?这才是我真正想要实现的。(感谢您提供有关eval()用法的提示。)302是重定向状态。如果您更改为直接使用重定向到的url,可能会解决您的问题。我不太熟悉Grails。。。可能是修改了URL吗?再看看,大多数响应实际上是200个OK响应,只有一些是302个响应。所以它似乎每次都在为图像服务。从到目前为止我在Grails和缓存中发现的情况来看,我明白它并不是开箱即用的。看起来我需要对这个做更多的阅读,这样我才能真正理解到底发生了什么,并进一步查看“缓存资源”插件。