问题标签 [browser-cache]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3746 浏览

jquery - 如何修复浏览器缓存和未修改的 JSON 响应?jQuery.ajax({ifModified:true,cache:true}) JSON 请求中断数据响应

如何修复浏览器缓存并notmodified响应 JSON?jQuery.ajax({ifModified:true,cache:true})JSON 请求在data响应时中断。

第一次浏览器请求http://localhost/api返回状态200 OK和nexts304 Not Modified

XHR 第一次返回正常:

但在下一次返回data undefined

如何解决?似乎是 jQuery 1.5.1 的错误。预期结果:

0 投票
1 回答
17337 浏览

font-face - 缓存字体字体

我正在使用@font-face 嵌入托管在 TypeFront 上的字体,但我的字体没有被浏览器缓存(Firefox 3.6.13 和 Epiphany 2.30.2)。这会导致每次页面加载时在 Firefox 上出现 FOUC(无样式内容的 Flash)和 MFOMT(缺少文本的瞬时闪现,我刚刚做了一个)(我第一次使用 FOUC/MFOMT 没问题)页面加载,但不是每次都加载)。

如果可能的话,我试图避免将字体嵌入 Base64 中的 CSS 中,并且我自己无法托管字体。

为什么字体没有缓存?有没有没有这个问题的替代免费字体托管​​服务?

测试页面:

如果我在 Firebug 中观察到,Net 选项卡显示每次页面加载时字体都提供“200 OK”,而不是“304 Not Modified”或其他正在使用缓存字体的指示(例如浏览器甚至没有尝试HTTP 请求)。

HTTP 标头:

0 投票
1 回答
533 浏览

javascript - 创建一个总是获取最新的外部脚本版本并将其保存在缓存中的小书签?

使用页内脚本标签,我通常会这样做:

这样,当我更新脚本源 url 并将其保存在缓存中时,浏览器会获取最新版本。

好吧,我怎样才能使用我无法编辑的书签来实现这一点(除非我要求用户删除/创建新的)?

小书签示例:

0 投票
2 回答
12374 浏览

gwt - GWT 缓存概念

有人可以简单地向我解释一下 GWT 中缓存的概念吗?我在很多地方都读过这篇文章,但可能由于我的知识有限,我无法理解它。

如nocache.js、cache.js

或其他事情,例如使客户端永久缓存文件或如何使客户端缓存文件,然后如果文件仅在服务器上更改,则客户端再次下载这些文件

0 投票
1 回答
1866 浏览

caching - 浏览器将使用多少缓存空间?

我很好奇各种浏览器在过早删除旧缓存文件之前会缓存多少 MB/GB。你知道吗?对于奖励积分,缓存文件将按什么顺序被删除(超出已过期的文件)。

0 投票
1 回答
412 浏览

html - 如何为我的站点中的 index.html 页面配置最佳缓存策略?

我有一个带有不时更新的 index.html 主页的网站。我们有时会为我们的客户添加优惠、特殊信息等,这些信息必须在第二天对每个人都可见。

如果 index.html 被浏览器缓存,很多用户不会注意到有什么变化,除非他们明确地刷新页面的内容......

在不影响缓存性能的情况下,确保 100% 的访问者拥有最新的 index.html 页面的最佳方法是什么?

0 投票
2 回答
24620 浏览

jquery - 处理 304 未在 jQuery ajax 中修改的正确方法

从 jQuery 1.5 开始,ajax 方法现在可以根据 XMLHTTPRequest 的 W3C 规范,通过调用 success() 处理程序正确处理 304 Not Modified 响应。这允许您的应用程序将请求视为成功,即使服务器实际上没有返回任何数据(因为您已经缓存了最新的数据)。

对于普通(未缓存的)GET 请求,成功处理程序使用以下参数调用:

  • 数据:{来自服务器的数据}
  • 状态:好的
  • jqXHR:
    • 状态:200
    • 状态文本:好的
    • responseText:{来自服务器的数据}

对于缓存的 GET 请求,使用以下参数调用成功处理程序:

  • 数据:未定义
  • 状态:未修改
  • jqXHR:
    • 状态:304
    • 状态文本:未修改
    • responseText:{缓存中的数据}

(至少,这是它在 IOS 4.2 中返回的方式,对于通过清单文件使用应用程序缓存的 Web 应用程序。我假设这对于大多数平台/浏览器上的一般浏览器缓存是一致的)。

您可以看到“数据”参数仅在请求为 200 OK 时才被填充;其中 jqXHR.responseText 始终填充有数据,无论该数据是来自服务器(200 OK)还是来自缓存(304 Not Modified)。

鉴于此,在大多数 GET 请求中,您的成功处理程序都会想要对您获得的数据做一些事情,无论它来自哪里,对于您的成功代码来说,始终使用 jqXHR.responseText 似乎是最有意义的,而不是做这样的事情:

或者是否存在 jqXHR.responseText不会在成功处理程序中填充但数据 arg填充的情况?

我必须检查我的代码库并更改所有成功处理程序(以前我使用的是 jQuery 1.4.2,它总是返回数据,即使从缓存中也是如此);所以我只想确保我以正确的方式处理它。(不想走到最后,然后意识到我应该以另一种方式完成)。

0 投票
3 回答
1009 浏览

.net - 如何在开发/测试期间将 IE 设置为不在缓存中存储任何内容?

我正在创建一个 Asp.NET 站点并在 IE 中对其进行测试。有时当我更改代码并刷新页面时,更改不会“看到”,我必须清除 IE 中的缓存和私有数据。有没有办法关闭这个缓存浏览器端只是为了开发?我想要生产中的功能,但是在网站上工作时很烦人。

0 投票
1 回答
763 浏览

ajax - 页面 DOM 更新后如何修改浏览器缓存?

到目前为止,我知道我可以使用 AJAX 分离静态和动态内容,因此如果博客文章有评论更新,则不必重新下载文章(它是 304),只需重新下载评论即可。现在,我正在考虑保留获取的动态内容,以便下次只需要请求新的评论。有什么方法可以在不依赖 Flash/Gears/HTML5Storage 或其他插件的情况下做到这一点?

编辑:假设文章的评论部分如下所示:

其中,获取评论的 AJAX 调用会将它们附加到<dl id='comments-block'>,其中包含以下代码段:

可以缓存的。随后的 AJAX 调用应仅返回新内容,附加到上述内容。现在加载文章时,逻辑是这样的

  1. 第一个不带时间戳的 AJAX 评论调用:获取当前时间戳 A 之前的所有评论。这是缓存的。
  2. 时间过去了,在新的时间戳 B 上,在时间戳 A 之后向服务器发送评论请求。这个调用可能会被缓存,但毫无意义,因为请求 url 永远不会被重用。
  3. 客户端现在已经更新了评论,直到时间戳 B。但只有时间戳 A 之前的内容被缓存。
  4. 客户端刷新文章,提示第一个没有时间戳的评论请求,应该返回缓存的评论,直到时间戳A。

所以问题是如何修改缓存的内容以包含时间戳 A 和 B 之间的内容。

0 投票
0 回答
603 浏览

firefox - Firefox 缓存错误

这是一个错误/问题,已经花费了我至少 3 年的时间。

我在 ASP.NET 中有复杂的动态页面,这些页面使用了大量的 javascript(或多或少是静态的)。

现在我有一种行为,它只在 Firefox 中发生,然后每隔 10.000 个请求才会发生。

用户在我的网站上玩游戏,所以他们每天一次又一次地访问同一个页面。然后游戏因页面上的 javascript 错误而锁定。我一直无法弄清楚到底发生了什么。文件可能已损坏?Shift-F5 或简单的重新加载没有帮助。如果用户清除他的缓存,问题就消失了。

这已经被报道了数百次。每次用户是 Firefox 用户时,每次清除缓存都会解决此问题。

我无法确定这个错误,因为我无法重现它。有很多报告说 Firefox 正在缓存它不应该缓存的文件。但这似乎不是我的问题。其他事情正在发生。

有人知道发生了什么吗?