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

iis - imageresizer if-modified-since 支持

我试图弄清楚为什么 imageresizer 在执行 If-Modified-Since 时返回“HTTP/1.1 200 OK”而不是“HTTP/1.1 304 Not Modified”状态代码,与没有返回“HTTP/1.1 304”的 imageresizer 的请求相反未修改”除外。

我仅使用带有 imageresizer 大小调整模块的 IIS,命令语法如下:

curl -I --header 'If-Modified-Since: DATE-FORMAT-HERE' http://xxx/x.jpg

谢谢,亚龙

0 投票
1 回答
213 浏览

rest - 是否使用 If-Modified-Since 标头将资源集合过滤为仅 REST API 中最近的资源集合被视为有效方法?

我正在设计一个 REST API,我需要根据客户端提供的时间戳(反过来,将由API 在先前的响应中)。为此,我正在考虑使用 Last-Modified 和 If-Modified-Since 标头。

这里较早的问题(例如Is it valid to modify a REST API representation based on a If-Modified-Since header?)似乎表明这是不赞成的,因为RFC2616表明这些标头的目的与缓存有关. 但是,从那时起,RFC2616 已被RFC7232取代,其中指出

If-Modified-Since 通常用于两个不同的目的:1) 允许有效更新没有实体标签的缓存表示和 2) 将 Web 遍历的范围限制为最近更改的资源。

我的解释是,我允许检索自上次检索以来对集合的所有更改的用例包含在第二个目的中。

所以我有两个问题:

  1. 这种解释是正确的,还是我在这里遗漏了一些微妙的东西?
  2. 即使我的解释是正确的,以这种方式使用这些标题是否是一种好习惯?换句话说:还有什么其他原因不使用这些标头,例如,在响应中包含时间戳并允许客户端在下一个请求的查询字符串中提供该时间戳?
0 投票
1 回答
186 浏览

javascript - 使用 fetch API 忽略条件 GET

我正在使用 Discord.js/Node.js获取和解析 RSS 提要 ( https://www.mangaupdates.com/rss.php )。我目前正在尝试添加条件If-Modified-Since标头以向 RSS 提要发出条件 GET 请求。这是我的代码:

响应状态始终200是即使它应该仅在自fetch调用命令时被修改时才发出请求。

0 投票
0 回答
12 浏览

firefox - 设置 Last-Modified 标头时,Firefox 总是缓存

我正在尝试使用If-Modified-Since我的 Flask 应用程序中的标头来实现浏览器缓存。在正常导航期间(例如单击链接,而不是硬刷新),Firefox 缓存页面而不是发出 HTTP 请求。这意味着 Firefox 没有发送If-Modified-Since标头,因此服务器无法返回页面的更新版本。

附件是我的控制台的屏幕截图。注意:

  1. 响应被标记为“缓存”
  2. 缓存的响应是说我的服务器正在返回一个 If-Modified-Since 标头。但是,它正在返回该标头的先前值。如果 Firefox 实际发出 HTTP 请求,服务器将返回更新的时间戳。

这是典型的行为吗?我应该以不同的方式使用缓存头吗?如何实现预期的行为,即浏览器仅在服务器确认内容未更新时才缓存?(OSX 上的 Firefox 81.0.2)。

Firefox 控制台输出

0 投票
1 回答
93 浏览

rest - 在同一秒内修改两次的页面是否会中断 If-Modified-Since?

根据我对缓存机制的理解,响应头Last-Modified、请求头等If-Modified-Since具有秒级的准确性,即If-Modified-Since: Wed, 21 Oct 2015 07:28:00 GMT,因此亚秒级的修改会破坏失效:

并且在缓存过期之前,客户端永远不会获得页面的版本 2。

真的是这样吗?存储在页面中的版本是否应该总是将页面的最后修改日期增加一秒?

0 投票
0 回答
17 浏览

rest - 当使用带有正则表达式模式的路径参数调用 REST api 时,If-Modified-Since 不起作用

我的 Rest api 如下所示

如果我的请求是 http://localhost:9900/content/inline_document_display.htm,路径将是 inline_document_display.htm。

当我第一次使用上述 url 调用 api 时,我在响应标头中设置了 Last-Modified,但在随后的请求中,我在标头请求中看不到“If-Modified-Since”。

我调整了其余的 api 以删除 @Path("/{path:.*}") 并且它工作正常。我在随后的标头请求中得到了“If-Modified-Since”。

所以我的问题是,路径参数(带/不带正则表达式模式)是否有所作为?

如果您需要详细的解释,请告诉我。谢谢!

0 投票
0 回答
14 浏览

search-engine - 如果 If-Modified-Since 为 false,为什么我会获取数据

我在https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Modified-Since上阅读:

所以我处理一个 API 调用,比如说https://en.vikidia.org/wiki/Computer

问题:

  • 为什么我会同时收到数据和304代码状态?这似乎合乎逻辑,但也似乎违反规范(见上面的链接)
  • 为什么Wed, 19 May 2021 12:55:57 GMT具体?谁请求了这个特定日期(duckduckgo?因为我在直接从 Vikidia 请求页面时没有 If-Modified-Since 标签)?
0 投票
2 回答
53 浏览

python - 如果磁盘上的文件发生更改,如何重新加载 python 类?

为了支持存储在源类文件中并用作具有字段的对象的参数的运行时更改,我如何检查对象的源文件自运行时开始或自上次重新加载以来是否被修改,并重新加载类并制作对象的新实例?