问题标签 [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 回答
2181 浏览

azure - Azure CDN - 使用 ETag 启用 HTTP 304 缓存 - 托管 Web 角色

我们正在尝试通过 Azure CDN 上的 ETag启用HTTP 压缩(gzip) 和HTTP 304 缓存。我们已经发现了启用 Azure CDN 压缩的问题,但现在我们无法让压缩和 ETag 缓存 ( 304s ) 同时工作。此问题已在此处发布到 Azure 论坛

这是一个压缩的示例,但不是 HTTP 可缓存 (304) 链接:

https://xxxx.vo.msecnd.net/resourceManager.axd?token=HL80vX5hf3lIAAA&group=core.js

这是可缓存 (304)但不可压缩 (gzip) 链接的示例:

https://xxxx.vo.msecnd.net/resourceManager.axd?token=HL80vX5hf3lIAAA&group=core.png

有谁知道如何让HTTP 缓存 (304s)HTTP 压缩在 Azure CDN 上协同工作?

0 投票
1 回答
423 浏览

ruby-on-rails - Heroku & Rails - Varnish 只是偶尔缓存

我有一个类似于Heroku & Rails - Varnish HTTP Cache Not Working的问题,但解决方案(等待一段时间,然后一切正常)似乎并不适用 - 我已经进行了几天的设置。

Heroku Google group 上的这个帖子有一些用户有同样的问题。他们提到缓存所有内容都需要一段时间,但我的理解是,过了一段时间,所有内容都应该被缓存,不是吗?还是仅在流量很大的情况下才适用?

我需要一些关于我应该在哪里寻找/我可以尝试改变什么以使缓存正常工作的建议。

我的设置:

我在 Heroku(Rails 3.0.3、Ruby 1.9.2、bamboo-mri-1.9.2)上运行http://www.swingoutlondon.co.uk,主索引页面执行大量数据库查询以返回什么本质上是一个静态页面——通常需要大约 2-3 秒(是的,这是我确实需要解决的问题,但我认为清漆缓存是一个快速的胜利)

我已经按照此处Cache-Control所述设置了响应标头,并且确实似乎已在页面上设置了该标头:

笔记:Cache-Control: public, max-age=300

我假设这Age: 0表明它没有检索到缓存副本,并且确实该命令在正常的慢 2-3 秒内返回。

如果继续反复尝试该 curl,我偶尔可以缓存副本(页面在半秒内加载并且Age大于 0)。

我必须承认我没有完全理解 HTTP 标头,但一个线索可能是:当Age大于 0 时,我得到两个数字X-Varnish(在所有其他情况下,我只得到一组):

这是我检查过的内容:

  • 每次的来源都是相同的。
  • before_filter在那个页面上有一个,它将页面上次更新的时间设置为实例变量。
  • 有许多 cookie - 据我所知,它们都是由 Google Analytics 或 Twitter 或 Facebook 按钮设置的。

为了更好地衡量,这是我的请求标头:

0 投票
1 回答
1066 浏览

php - 如何全局禁用 symfony2 http 缓存?

我正在开发网站Symfony2

该网站的大多数页面都是高度动态的,因此我遇到了 HTTP 缓存问题。

我发现如果我使用函数setMaxAge(0)进行响应,问题就会得到解决,但现在不可能为每个响应设置它。有什么方法可以 setMaxAge全局禁用 HTTP 缓存或 0 吗?

0 投票
1 回答
124 浏览

ruby-on-rails - Internet Explorer未清除Rails javascript资产缓存

我们正在为 JavaScript 使用 Rails 资产管道。application-xyz.js (xyz = 摘要) 被缓存并且似乎没有被 IE (版本 8) 清除,即使我重新编译所有资产并重新部署到生产环境。即使删除历史记录和临时 Internet 文件也无济于事。

是否有任何指令/标题可以使 IE 清除缓存版本并始终获取页面的最新版本?

0 投票
2 回答
398 浏览

asp.net - 输出缓存动态生成的 CSS

在我的应用程序中,用户可以选择修改其站点的 CSS。

这不太可能经常改变,但是当它发生时,我们需要确保他们和他们的网站访问者能够立即看到结果。

我们确实记录了用户更新 CSS 的日期和时间,因此一个简单的解决方案就是在 url 上附加一个时间戳。

但是,我想知道是否可以以编程方式设置缓存标头以强制浏览器在 CSS 文件更改时重新请求它。

0 投票
1 回答
1085 浏览

asp.net-mvc-3 - ASP.NET MVC3 获取视图任何部分的上次修改时间?

我想在渲染之前获取视图任何部分的最后修改时间。这包括布局页面、部分视图等。

我想设定一个合适的时间

正确处理http缓存。目前我已经为视图本身工作,但是如果布局页面有任何更改,或者子部分视图没有被拾取

有什么办法可以得到整体的最后修改时间?

我不想304 Not Modified在修改了视图相关部分的部署之后做出响应,因为用户会得到不一致的行为。

0 投票
3 回答
1439 浏览

http - 是否有必要将查询字符串附加到 img 标签中的图像和 css 中的图像以刷新缓存的项目?

我知道一种常见的做法是为 css、javascript 和图像文件设置一个过期时间,然后确保所有浏览器通过附加查询字符串(或更改文件名)这样的查询字符串(或更改文件名)在文件更改后立即获取最新内容

从此<link rel="stylesheet" type="text/css" href="base.css">

对此:

或者:

但是在 css 文件中引用的图像呢?

还是会/img/logo.png在base.css更改文件名时重新加载base.css?v=1234base_1234.css自动?

另外,srcfor img-tags 中的图像呢?

0 投票
2 回答
1579 浏览

asp.net-mvc - 为什么 Chrome 在这两种情况下使用客户端缓存的方式不同?

我正在开发一个使用 HTML5 的小型单页应用程序。一个功能是显示嵌入在页面中的 PDF 文档,可以从列表中选择哪些文档。

现在我正在尝试让 Chrome(首先,然后是所有其他现代浏览器)使用本地客户端缓存来完成对 PDF 文档的简单 GET 请求,而无需通过服务器(当然第一次除外)。<object>我通过在 HTML 中的元素上设置“数据”属性来请求 PDF 文件。

我找到了XMLHttpRequest (不是)的工作示例。<object>如果您使用 Chrome 的开发人员工具(网络选项卡),您可以看到第一个请求到达服务器,并导致带有以下标头的响应:

第二个请求是从本地缓存中提供的,没有任何服务器往返,这就是我想要的。

回到我自己的应用程序,然后我使用 ASP-NET MVC 4 并设置

在我的控制器上。对该控制器的第一个请求 - 带有 URLhttp://localhost:63035/?doi=10.1155/2007/98732的结果如下:

第二个请求导致到服务器的另一次往返,响应速度更快(建议服务器端缓存?)但返回 200 OK 和这些标头:

对相同 URL 的第三次请求会导致另一个往返和带有以下标头的 304 响应:

我的问题是,我应该如何设置 OutputCache 属性以获得所需的行为(即在初始请求的 X 秒内从客户端缓存中填充 PDF 请求)?

<object>或者,当我通过在元素上设置“数据”属性来显示 PDF 时,我是否做得不对?

0 投票
2 回答
1673 浏览

asp.net-mvc-3 - 为什么我的图像没有缓存?

我有一个 ASP.NET MVC3 应用程序设置。有一个返回图像的控制器,我添加了以下内容:

但是当我查看这些图像上的 HTTP 响应时,它们都有标头“缓存控制:无缓存”和“过期:-1”,这意味着浏览器永远不会缓存它们。

我环顾四周,找不到任何关于为什么响应告诉浏览器不要缓存它们的信息。我什至尝试建立自己的属性:

但这也没有让我到任何地方。

任何帮助表示赞赏。

更新:我开始认为这必须是某个 IIS 设置,它正在添加无缓存和覆盖。不过,我似乎找不到任何东西。唯一奇怪的是,如果我在调用 .Set...() 方法后查看缓存变量的状态,内部变量尚未更新。我本来预计会有所改变,但他们仍然显示“无缓存”。

更新2:我应该补充一点,这个方法的返回是:

更新3:我也发现了这个(http://dotnetslackers.com/articles/aspnet/ASP-NET-MVC-3-Controller-for-Serving-Images.aspx)并尝试实现它没有任何运气。仍然在图像的响应标头上获得无缓存选项。

更新4:只需检查服务器设置......如果我绕过我的控制器并直接进入服务器上的图像文件,那么它会缓存并在响应标头中具有正确的缓存设置。

更新 5(是的,快疯了):创建了一个全新的 MVC3 项目,只制作了一个控制器,它缓存得很好。所以我在直接代码之外有一些东西正在添加这个 pragma:no-cache 东西,而对于我的生活,我无法弄清楚它会是什么。=-/

0 投票
1 回答
343 浏览

php - 如何缓存 REST 资源的不同格式/表示?

我使用 tonic.php (http://peej.github.com/tonic/) 库来创建我的 REST 资源。数据非常稳定,最好有较长的缓存时间。我设置了缓存头(使用 tonic.php 库):

问题是,当请求 html 时,会对 php 页面进行 cURL 调用,并将返回的 html 放入响应正文中:

然后,此返回的页面通过 AJAX 调用对同一资源获取实际数据,但接受标头为“application/json”而不是“text/html”。AJAX 调用是用 jquery 完成的,如果我设置

在 jquery $.ajax 中,使用 accept: text/html 调用我的资源只会将数据显示为 JSON 而不是网页 (Firefox) 或引发错误 (IE8)。代码:

添加

让它工作。然而,json 永远不会被缓存,这会导致与设置缓存相同的行为:在 Jquery ajax 调用中为 false。

如何缓存 2 种不同的表示并让浏览器为请求的接受标头显示正确的表示?