问题标签 [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.
http - 对动态生成的远程文件使用 If-Modified-Since 标头
我们的网络服务器会定期从其他网络服务器下载图像。为了防止我们的服务器每天都必须下载相同的图像,即使它没有更改,我计划在图像下载时存储 Last-Modified 标头,然后将该日期放入后续请求的 If-Modified-Since 标头中同一个文件。
我可以正常工作,除非在请求时即时生成远程文件(例如,如果它在从单独的原始文件请求时为 Web 生成特定大小的版本)。在这种情况下,Last-Modified 标头是远程服务器响应请求的日期,因此先前下载的存储的 Last-Modified 标头始终比后续请求的标头更早,因此图像将始终被下载,我永远不会得到 304 Not Modified 状态码。
那么,当远程服务器提供动态生成的图像时,有没有办法降低下载频率?
在我看来这是不可能的,但我想我还是会问。
.htaccess - 如果修改后使用(替换 www)modrewrite-rule
我只使用我的域http://myDomain.com而不是http://www.myDomain.com,
所以我使用这个规则
我的问题是,我总是得到一个 301 重定向 - > 即使我访问我的域而没有 www
有什么想法可以解决这个问题吗?
我的目标是:
提前致谢!
ruby-on-rails - 如何在 http 请求中传递“If-Modified-Since”?
我正在从外部资源中获取一系列书籍。为此,我正在使用类似的电话
在 last-update-date 中,我从先前响应的标头中保存了 last-modified 的值。但我总是将状态代码设为 200,而不是 304 未修改。但是当我尝试使用以下代码使用 etag 时。
以上工作正常,返回 304 未修改。请帮助我修改后我所缺少的
telnet - 使用 Telnet 的错误请求 400
'正在尝试在 Telnet 中使用 If-Modified-Since 命令。我想获得一个 304 Not modified statut 代码。我试过了,但它不起作用,我收到 400 bad request 错误
结果我得到了
HTTP/1.0 400 错误请求缓存控制:无缓存连接:关闭内容类型:文本/html
http - 强制响应 304 状态码
我正在尝试使用 telnet 强制响应 304 not modified 状态代码。我没有看到我的命令有问题,但我仍然有 200 OK 状态。
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 没有为请求的这个响应找到缓存条目,并删除了这个参数以确保会有内容要缓存,但他从来没有找到一个条目。也经过多次重装。
我在控制器中需要这个参数,目前应用程序不可能更改参数或发送带有日期值的其他参数。
我是否必须做一些配置或其他事情?
如果有人可以帮助我,我将不胜感激。
api - 在 RESTful API 上使用 Last-Modified 和 If-Modified-Since
我一直在阅读一些关于设置Last-Modified
从服务器发送响应时的标头的文章。我了解它的目的,以及如何设置它等。
我也了解传入的If-Modified-Since
标头,并且从那时起它所要求的是否有任何变化。我了解如何检索标头并将其转换为时间戳等。
我正在努力解决的问题是我将修改后的时间戳与之进行比较。我的理解是,通过使用 last modified 我不需要我的 API 来继续检索大量数据(如果它仍然相同)。
那么,我是否应该对 API 的缓存/数据库进行超轻量级调用,并检查对所请求的任何数据集的最后修改?
http - 通过 Nginx 无限期缓存 HTTP 响应失败
我试图告诉 nginx 永久缓存我的一些资产(js、css),或者至少缓存很长时间。
这个想法是,一旦资产包使用/assets/
URI 前缀(例如/assets/foo-{fingerprint}.js
)编译和发布,它就会保留在那里并且永远不需要更改。
互联网告诉我我应该写下以下规则:
我希望这会导致 HTTP 代码 304“未修改”的响应,但我得到的是每次一致的 HTTP 200(OK)。
我尝试了其他一些方法,例如:
a) 明确地将修改时间设置为过去的一个恒定时间点;
b) 切换到If-None-Match
检查;
但是,唯一真正根据需要起作用的是:
我迷路了。这与我认为正确的一切背道而驰。请帮忙。
safari - Safari 似乎没有发送主地址的 If-Modified-Since 标头
在查看(仔细......)论坛(和其他人)的不同问题和答案后,我没有找到明确的答案。当 Safari 向 Web 服务器请求资源(页面、图像...)时,它不会为请求的主要资源提供 If-Modified-Since 标头。这意味着 Web 服务器无法回答“资源未修改,使用您的缓存”。这不是其他浏览器的行为,并且对 Web 服务器和用户的性能都不好。
然而,Safari 会为资源的子元素(例如图像、页面中的 css...)发送此 If-Modified-Since。哪个好。
所以我认为 Safari 故意决定不为主要请求的资源发送此标头,但可以 100% 确定,您知道一种影响 Safari 行为的方法,即为向服务器请求的主要资源提供 If-Modified-Since 吗?
阿卡玛,
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
.
任何线索,在我撕掉更多的头发之前?