我试图依靠浏览器缓存来保存从jQuery中的AJAX调用返回的JSON数据。
正常的浏览器活动始终依赖于浏览器缓存。示例:重新加载页面时未重新获取jpg和gif图像。
但是,当我尝试使用jQuery getJSON ajax调用时,似乎无法避免从服务器获取数据。
我返回的标头如下所示(已通过Firebug确认):
Transfer-Encoding: chunked
Date: Wed, 05 Aug 2009 02:55:39 GMT
Content-Type: text/plain; charset=ISO-8859-1
Expires: Wed, 05 Aug 2009 03:55:39 GMT
Cache-Control: max-age=3600
但是,页面的立即刷新会导致相同的请求到达服务器。
我看过几篇关于避免缓存行为的文章,这不是我所需要的。我看过几篇有关使用缓存的文章,但是这些似乎都依赖于将数据保存在DOM中。我想要的行为就像页面重新加载期间缓存的图像一样。
难道浏览器只是从它自己的缓存中获取它?
--x–x–x–x更新–x–x–x–
令我非常失望的是,几个受人尊敬的人都认为这不仅是可能的。有人甚至辩称不应该这样(这仍然让我感到困惑)。
存根错误,我尝试了以下方法:
我在要缓存的所有传出页面上设置了Etag标头(我选择了一些表示我请求的数据的选择URL参数,并将其用作Etag值)
在下一个请求的开头,我只是检查请求中是否包含“ If-None-Match”标头。如果是这样,那么浏览器就不会像我想要的那样缓存请求,因此我发送了304
Not Modified响应。
测试表明,Firefox不会缓存我的请求(但是我仍然可以避免cgi的“获取昂贵的数据”部分),而IE6会实际缓存它(甚至不会尝试从服务器取回)。
这不是一个很好的答案,但它目前对我
有用(那些充满麻烦的图形数据全页刷新现在不会太慢或太昂贵了)。
(什么?我正在运行IE6!OMG!哦,看起来是一只松鼠!)
Ajax缓存是可能且可预测的(至少在IE和Firefox中)。
这篇博客文章讨论了Ajax缓存,并有一个演示网页:
http://blog.httpwatch.com/2009/08/07/ajax-caching-two-important-
facts/
史蒂夫·苏德斯(Steve Souders)也就F5问题进行了跟进:
http://stevesouders.com/tests/ajax_caching.php
问题内容: 好像我使用加载动态内容,结果缓存在浏览器中。 在QueryString中添加一些随机字符串似乎可以解决此问题(我使用),但这听起来像是一种hack。 还有其他方法可以做到这一点吗?或者,如果唯一字符串是实现此目标的唯一方法,则除之外还有其他建议吗? 问题答案: 我使用,这将避免冲突,除非您在同一毫秒内发生多个请求: 编辑: 这个答案已经好几年了。它仍然有效(因此我没有删除它),但是 现
问题内容: 我想在javascript /浏览器中启用ajax响应的缓存。 从jquery.ajax docs : 默认情况下,始终发出请求,但浏览器可能会在其缓存之外提供结果。要禁止使用缓存的结果,请将cache设置为false。如果自上次请求以来未修改资产,则导致请求报告失败,请将ifModified设置为true。 但是,这些地址都没有强制缓存。 动机: 我想在我的初始化函数中放入调用,其中
我为google speed insight工作,它要求利用浏览器缓存 我已经添加了代码。htaccess如下所示 js文件没有生效,我的js文件内容类型是应用程序/javascript,因为我通过检查检查了这些。 我的代码有什么问题?我也试过了 但它并没有得到任何改进,而且文件中也并没有添加过期日期。 有人能帮忙吗?
推荐: http://www.cnblogs.com/skynet/archive/2012/11/28/2792503.html 304 Not Modified
本文向大家介绍浅谈Ajax请求与浏览器缓存,包括了浅谈Ajax请求与浏览器缓存的使用技巧和注意事项,需要的朋友参考一下 在现代Web应用程序中,前端代码充斥着大量的Ajax请求,如果对于Ajax请求可以使用浏览器缓存,那么可以显著地减少网络请求,提高程序响应速度。 1. Ajax Request 使用jQuery框架可以很方便的进行Ajax请求,示例代码如下: 非常简单,注意其中的第4行代码:ca
问题内容: 有谁知道如何编写一个servlet过滤器,该过滤器将在给定文件/内容类型的响应上设置缓存头?我有一个提供大量图像的应用程序,我想通过让浏览器缓存那些不经常更改的图像来减少托管它的带宽。理想情况下,我希望能够指定一种内容类型,并在内容类型匹配时让它设置适当的标题。 有人知道该怎么做吗?或者,甚至更好的是,他们愿意共享示例代码吗?谢谢! 问题答案: 在您的过滤器中有以下行: 响应包装如下所