问题标签 [if-modified-since]

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 回答
335 浏览

http - 对动态生成的远程文件使用 If-Modified-Since 标头

我们的网络服务器会定期从其他网络服务器下载图像。为了防止我们的服务器每天都必须下载相同的图像,即使它没有更改,我计划在图像下载时存储 Last-Modified 标头,然后将该日期放入后续请求的 If-Modified-Since 标头中同一个文件。

我可以正常工作,除非在请求时即时生成远程文件(例如,如果它在从单独的原始文件请求时为 Web 生成特定大小的版本)。在这种情况下,Last-Modified 标头是远程服务器响应请求的日期,因此先前下载的存储的 Last-Modified 标头始终比后续请求的标头更早,因此图像将始终被下载,我永远不会得到 304 Not Modified 状态码。

那么,当远程服务器提供动态生成的图像时,有没有办法降低下载频率?

在我看来这是不可能的,但我想我还是会问。

0 投票
0 回答
209 浏览

.htaccess - 如果修改后使用(替换 www)modrewrite-rule

我只使用我的域http://myDomain.com而不是http://www.myDomain.com
所以我使用这个规则

我的问题是,我总是得到一个 301 重定向 - > 即使我访问我的域而没有 www

有什么想法可以解决这个问题吗?

我的目标是:

提前致谢!

0 投票
1 回答
1566 浏览

ruby-on-rails - 如何在 http 请求中传递“If-Modified-Since”?

我正在从外部资源中获取一系列书籍。为此,我正在使用类似的电话

在 last-update-date 中,我从先前响应的标头中保存了 last-modified 的值。但我总是将状态代码设为 200,而不是 304 未修改。但是当我尝试使用以下代码使用 etag 时。

以上工作正常,返回 304 未修改。请帮助我修改后我所缺少的

0 投票
1 回答
2236 浏览

telnet - 使用 Telnet 的错误请求 400

'正在尝试在 Telnet 中使用 If-Modified-Since 命令。我想获得一个 304 Not modified statut 代码。我试过了,但它不起作用,我收到 400 bad request 错误

结果我得到了

HTTP/1.0 400 错误请求缓存控制:无缓存连接:关闭内容类型:文本/html

0 投票
1 回答
2422 浏览

http - 强制响应 304 状态码

我正在尝试使用 telnet 强制响应 304 not modified 状态代码。我没有看到我的命令有问题,但我仍然有 200 OK 状态。

0 投票
1 回答
717 浏览

php - Symfony2 删除生产中的“if-modified-since”参数

我用 Symfony2 为 iOS 应用程序制作了一个 API。应用程序发送带有标头参数的 GET 请求if-modified-since

"If-Modified-Since" = "星期四,2013 年 11 月 7 日 11:50:52 GMT";

在控制器中,我检查参数并在日期较新时返回数据。但是在 Symfony2 中,参数会在类的生产环境中被删除Symfony\Component\HttpKernel\HttpCache\HttpCache.php。这是类中的函数。

所以看起来 Symfony 没有为请求的这个响应找到缓存条目,并删除了这个参数以确保会有内容要缓存,但他从来没有找到一个条目。也经过多次重装。

我在控制器中需要这个参数,目前应用程序不可能更改参数或发送带有日期值的其他参数。

我是否必须做一些配置或其他事情?

如果有人可以帮助我,我将不胜感激。

0 投票
1 回答
2221 浏览

api - 在 RESTful API 上使用 Last-Modified 和 If-Modified-Since

我一直在阅读一些关于设置Last-Modified从服务器发送响应时的标头的文章。我了解它的目的,以及如何设置它等。

我也了解传入的If-Modified-Since标头,并且从那时起它所要求的是否有任何变化。我了解如何检索标头并将其转换为时间戳等。

我正在努力解决的问题是我将修改后的时间戳与之进行比较。我的理解是,通过使用 last modified 我不需要我的 API 来继续检索大量数据(如果它仍然相同)。

那么,我是否应该对 API 的缓存/数据库进行超轻量级调用,并检查对所请求的任何数据集的最后修改?

0 投票
2 回答
5152 浏览

http - 通过 Nginx 无限期缓存 HTTP 响应失败

我试图告诉 nginx 永久缓存我的一些资产(js、css),或者至少缓存很长时间。

这个想法是,一旦资产包使用/assets/URI 前缀(例如/assets/foo-{fingerprint}.js)编译和发布,它就会保留在那里并且永远不需要更改。

互联网告诉我我应该写下以下规则:

我希望这会导致 HTTP 代码 304“未修改”的响应,但我得到的是每次一致的 HTTP 200(OK)。

我尝试了其他一些方法,例如:

a) 明确地将修改时间设置为过去的一个恒定时间点;

b) 切换到If-None-Match检查;

但是,唯一真正根据需要起作用的是:

我迷路了。这与我认为正确的一切背道而驰。请帮忙。

0 投票
1 回答
745 浏览

safari - Safari 似乎没有发送主地址的 If-Modified-Since 标头

在查看(仔细......)论坛(和其他人)的不同问题和答案后,我没有找到明确的答案。当 Safari 向 Web 服务器请求资源(页面、图像...)时,它不会为请求的主要资源提供 If-Modified-Since 标头。这意味着 Web 服务器无法回答“资源未修改,使用您的缓存”。这不是其他浏览器的行为,并且对 Web 服务器和用户的性能都不好。

然而,Safari 会为资源的子元素(例如图像、页面中的 css...)发送此 If-Modified-Since。哪个好。

所以我认为 Safari 故意决定不为主要请求的资源发送此标头,但可以 100% 确定,您知道一种影响 Safari 行为的方法,即为向服务器请求的主要资源提供 If-Modified-Since 吗?

阿卡玛,

0 投票
0 回答
683 浏览

php - 为什么Firefox发送If-Modified-Since但PHP接收到空白,仅在一台服务器上?

我对 HTTP、标头、浏览器、javascript、PHP 和所有这些相关的 hoo-hah 有相当多的经验,但这个让我很难过。

我使用 Dojo javascript 工具包编写了一个 Javascript RESTful 前端。它的一个组件是一个 RESTful 存储,它轮询后端的新数据项,将 If-Modified-Since 标头传递给服务器。然后后端响应自那时以来创建或更新的所有项目。我的后端是 PHP,它读取 $_SERVER['HTTP_IF_MODIFIED_SINCE'] 值,解析它,然后继续处理。

这在 Chrome 和 Firefox 中的本地主机(Ubuntu 13.05,apache2 2.4.6 PHP 5.5.3)上完美运行。但是,在我们的生产服务器(Centos 6.5 apache2 2.2.23 PHP 5.3.17)上,Chrome 工作正常,但 Firefox 有问题。

我看到的是 Firefox 正确发送 If-Modified-Since 标头并使用正常的日期格式,但是,PHP $_SERVER 变量包含 HTTP_IF_MODIFIED_SINCE 但该值似乎为空,并且 getallheaders() 返回一个没有该标头的数组,但是与所有其他标题。我的问题是,这可能是什么原因造成的,应该如何解决?

谷歌搜索这个主题让我发现很多人不知道如何使用 Last-Modified 使浏览器首先发送 If-Modified-Since ,或者如果发送了如何使用它。对于一种类型的浏览器,我找不到其他人存在发送但未在服务器上接收的问题。

我无法轻松地将 Firefox 网络监视器中的标题捕获为文本(做得很好 Mozilla),但相信我,If-Modified-Since 就在那里,其值例如Sat, 08 Feb 2014 10:29:14 GMT位于 和Accept-Encoding之间Content-Type

后端代码:

示例日志记录:

如您所见,array_key_exists测试返回 true,但值为空,但getallheaders()似乎返回了一个不包含If-Modified-Since.

任何线索,在我撕掉更多的头发之前?