问题标签 [http-caching]

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 投票
1 回答
1230 浏览

performance - Safari Mobile (Ipad) 似乎没有缓存我的 aspx 页面使用的 Telerik 和 Microsoft CDN 资源文件

我有一个带有各种 Telerik RadControls 的 aspx 网页,每次加载此页面时,Safari 移动似乎都会再次下载所有资源文件 - 例如,在每个页面请求时将以下文件下载到 ipad - 似乎什么都没有缓存,就像在其他非移动浏览器上一样。

即使 CDN 资源设置为缓存并具有 ETAGS,每次传递的 JavaScript 也超过 100K。

每次笔记本电脑浏览器缓存上面的资源文件而 ipad 没有缓存时,我已经为 ipad 和运行 IE/FF/Safari 的笔记本电脑安装了提琴手。

我认为这就是为什么我的应用程序在 Ipad 上的执行速度明显较慢的原因,尽管它可能也是 Ipad 上的缓慢 javascipt 解析......

有没有其他人有这个问题?我在这里遗漏了一些明显的东西吗?

谢谢。

编辑

我通过使笔记本电脑成为 iPad 的 http 代理来监控笔记本电脑上的 iPad 流量。

提琴手的额外信息:

Fiddler v2.3.0.0,笔记本电脑结果来自 IE8,iPad 版本。3.2.2.

从我的笔记本电脑,如果我去http://demos.telerik.com/aspnet-ajax/listbox/examples/default/defaultcs.aspx

并在提琴手中单击“First Look”几次后:

如果我在 iPad 上执行相同操作,fiddler 会记录以下内容:

编辑2:

我今天再次尝试了与上述完全相同的测试,并注意到:

1) iPad现在正在缓存 javascript

2) Telerik 演示没有使用 CDN,但它们是昨天的!(见下面的结果与上面的结果相比)

0 投票
2 回答
3645 浏览

javascript - 刷新图像或清除缓存

是否有任何方法(服务器或客户端)强制浏览器从服务器中提取新版本的文件(图像)。有问题的图像会被缓存很长时间。我知道我可以在图像的 URL 中附加一个随机数,但在这种情况下这是不可接受的。我需要从完全相同的URL 刷新图像。

我在做什么:一个类似于 YouTube 的门户,用户可以在其中上传视频。每个视频都有一个缩略图,显示在门户网站的各个页面上。用户可以随时更改缩略图(他可以从三个生成的缩略图中进行选择)。因此,当这种情况发生时(新图像覆盖“原始”图像),我不想刷新视频的缩略图,以便所有者(我不在乎其他用户是否看到旧缩略图)无论如何都会看到新缩略图显示缩略图的位置。

恐怕这无法完成,但我在这里问只是为了确定。

更新:我在服务器端使用 nginx 和 PHP

0 投票
2 回答
1691 浏览

http - 将浏览器重定向到另一个位置并强制刷新

我想请您提供有关浏览器缓存失效的建议。

假设我们有一个带有 http 标头的索引页面返回给客户端:

如果用户再次尝试点击该索引页面,浏览器很可能甚至不会向服务器发送请求——它只会向用户呈现页面的缓存版本。

我的问题是:是否可以创建一个 Web 资源(例如在 uri /invalidateIndex),这样当用户点击该资源时,他会以强制浏览器使其缓存无效并询问服务器的方式重定向到索引页面新鲜的内容?

0 投票
2 回答
5270 浏览

java - response.setDateHeader() - 缓存不起作用

我希望缓存网页中的 .png 文件。我在 web.xml 中添加了以下条目

在 init() 中按以下方式设置 expiryDate 字段值

doFilter() 是:

我的问题是,每当我在浏览器中刷新网页时,客户端都会不断请求 .png 文件。猜猜我的过滤器不工作。这个配置正确吗?

0 投票
2 回答
425 浏览

http - 为什么 Google 的主页徽标带有相互矛盾的“Expires”和“Cache-Control”标头?

这是目前在 www.google.com 上使用的徽标:

http://www.google.com/images/logos/ps_logo2.png

这是它的 HTTP 响应:

标题Cache-Control说它可以使用 1 年。但是Expires与 相同Date,即立即过时。

为什么有区别?

0 投票
1 回答
6339 浏览

caching - 提琴手显示缓存命中?

我只是想检查一下我的网站的 HTTP 缓存是否正常工作,尤其是在我搬到 CDN 之后。

现在我同时使用了 Fiddler 和 Firebug,我看到的是每次导航到页面时都会请求页面上的所有脚本和图像。响应代码为 200。

如果我在 Chrome 中打开页面,开发人员工具也会向我显示所有这些请求,但 Chrome 也会告诉我这些请求是从缓存中提供的。Fiddler 中没有列出 Chrome 请求(而 FF 和 IE 请求有)。

我最初的假设是,如果 Firefox 或 Internet Explorer 从其缓存中获取文件,则该请求根本不会出现在 Fiddler 中。

我检查了我的缓存标头,因为 Chrome 的行为与我预期的完全一样,所以我问自己我对 Fiddler 的假设是否错误。启动 Fiddler 时 FF/IE 的行为是否不同?Fiddler 是否显示缓存命中?

0 投票
3 回答
1942 浏览

header - 过期标头的智能解决方案

我们希望为使用过的图像、css 和 javascript 设置过期标头以提高页面速度,但我们知道修改 css 或 js 脚本时的缓存问题。

是否可以在加载 xhtml 的文件中添加元标记或其他标记,告诉浏览器刷新每个元素,无论在现有图像、css 或 js 上设置了什么缓存?

0 投票
1 回答
840 浏览

ruby-on-rails - 使用 Ruby on Rails 缓存登录表单

我有一个 Rails 3 网站,其主页是静态内容和登录表单。我想在这个页面上使用HTTP 缓存(我们在 Heroku - 在 Varnish 后面),但是登录表单的真实性令牌被缓存,这会触发伪造保护并阻止除第一个会话之外的所有登录。

认为我最好的做法是禁用此操作的伪造保护,但首先我想了解所涉及的风险。

那么……在这种情况下禁用伪造保护有什么风险?

或者,有没有更好的方法来解决这个问题?

0 投票
1 回答
7035 浏览

http - HTTP:结合过期和验证缓存

我在为以下情况制定 HTTP 缓存标头时遇到问题。

我们的服务器有大量数据,每周可能会更改几次。我希望浏览器缓存这些数据。此外,由于网络不可靠,我想尽量减少条件获取的延迟。

我追求的最终行为是这样的:

  1. 客户端请求它以前没有见过的资源。
  2. 服务器响应资源以及 ETag 和max-age(24 小时)。
  3. 在 24 小时过去之前,客户端将使用缓存的资源。
  4. 过期日期后,客户端将执行验证请求 ( If-None-Match: [etag])
  5. 如果资源没有改变:
    • 服务器响应304 Not Modified
    • 客户以某种方式被告知现有资源在 24 小时后有一个新的到期日期
    • 返回步骤 3

归结为它的本质...... 304 响应是否可以包含一个新的max-age?或者是原始的max-age尊重后续请求?

0 投票
1 回答
195 浏览

caching - using mod_disk_cache is it possible to cache only the static contents of a page containing both static and dynamic content?

I am trying to implement MOD_DISK_CACHE. Is it possible to cache only the static contents of a page containing both static and dynamic content?

i.e, if I want to cache the homepage of a user profile, I just want to cache the static contents of that page which will be common/generic to all the users, while the dynamic contents for eg "Welcome <Username>!!!", which is different for different users should be handled separately.

Any pointers would be so helpful.