问题标签 [etag]

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 投票
2 回答
547 浏览

java - Java的磁盘缓存http库:它存在吗?

据我所知,Apache HttpClient 没有缓存,所以我的问题是你知道可以缓存到磁盘的 Http 库吗?自己实现它会很有趣,但在我这样做之前,最好检查它是否已经存在:-)

要求:支持 Http 1.1 可以缓存到磁盘(例如:文件夹) 支持磁盘上的最大缓存大小 支持 eTag

0 投票
3 回答
24004 浏览

html - HTTP 304 Not Modified-responses 是否应该包含缓存控制标头?

我试图理解这一点,并搜索了类似的问题,但我仍然没有 100% 了解它应该如何工作。

我在请求图像资源时收到此响应:

期望的行为是客户端应该将此缓存 120 秒,然后再次从服务器请求它。在 120 秒内,没有请求发送到服务器。

然后,120 秒后,发送请求并收到 304 响应:

到目前为止,一切顺利。但是,在下一个请求(大约 120 秒)时,我会认为资源应该被缓存 120 秒。另一方面,我在浏览器(Firefox)中看到的是,它从这一点开始总是请求资源并接收 304 响应。

我应该在 304 响应中附加缓存控制标头吗?从我在规范中看到的内容来看,似乎应该省略缓存控制设置,并且缓存应该自动将其缓存 120 秒?

0 投票
2 回答
6567 浏览

http - HTTP:etag 的最大长度

HTTP 协议是否指定了 ETag 的最大长度?

0 投票
1 回答
454 浏览

ruby - ruby中的fresh_when不能使用xml渲染

在尝试在休息系统中实现对条件 GETting 的支持时,我们遇到了 fresh_when 和 stale? 方法。

以下代码适用于 304 且不能进一步渲染: if stale?(:etag => resource, :last_modified => resource.updated_at.utc) respond_to do |format| format.html # show.html.erb } end end

但是访问 1.xml 会尝试渲染资源两次:

错误信息:

ActionController::DoubleRenderError in OrdersController#show

每个动作只能渲染或重定向一次

RAILS_ROOT:/Users/guilherme/Documents/ruby/restfulie-test 应用程序跟踪 | 框架跟踪 | 全跟踪

/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:900:in render_without_benchmark' /Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/benchmarking.rb:51:inrender' /Library/Ruby/Gems/1.8/gems/activesupport-2.3.4/lib/active_support /core_ext/benchmark.rb:17:in ms' /Library/Ruby/Gems/1.8/gems/activesupport-2.3.4/lib/active_support/core_ext/benchmark.rb:10:inrealtime' /Library/Ruby/Gems/1.8/gems/activesupport-2.3.4/lib/active_support/core_ext/benchmark.rb:17:in ms' /Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/benchmarking.rb:51:inrender' /Library/Ruby/Gems /1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:1331:in send' /Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:1331:inperform_action_without_filters' /Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/filters.rb:617 :in call_filters' /Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/filters.rb:610:inperform_action_without_benchmark' /Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/benchmarking.rb:68:in perform_action_without_rescue' /Library/Ruby/Gems/1.8/gems/activesupport-2.3.4/lib/active_support/core_ext/benchmark.rb:17:inms' /Library/Ruby/Gems/1.8/gems/activesupport-2.3.4 /lib/active_support/core_ext/benchmark.rb:10:inrealtime' /Library/Ruby/Gems/1.8/gems/activesupport-2.3.4/lib/active_support/core_ext/benchmark.rb:17:inms' /Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/benchmarking.rb:68:in perform_action_without_rescue' /Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/rescue.rb:160:inperform_action_without_flash' /Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib /action_controller/flash.rb:146:in perform_action' /Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:532:insend' /Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:532:in process_without_filters' /Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/filters.rb:606:inprocess' /Library/Ruby/Gems/1.8 /gems/actionpack-2.3.4/lib/action_controller/base.rb:391:in process' /Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:386:incall' /Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/routing/route_set.rb:437 :在“通话”中

有什么建议么?

问候

0 投票
3 回答
638 浏览

http - ETags 与更新 URL 相比的优势

ETag 允许浏览器执行条件 GET。只有当相关资源已被更改时,才需要重新下载该资源。但是,浏览器仍然需要等待服务器响应它的请求。

ETags 的替代方法是在指向资源的 URL 中引入令牌:

http://example.com/css/styles.css?token=134124134

或者

http://example.com/css/134124134/styles.css

这两种方法都避免了重新下载未更改的资源。

但是,使用带有令牌的 URL 允许服务器在资源上设置一个遥远的到期标头。这节省了条件 GET 占用的往返行程 - 如果资源未更改,则指向它的 URL 将不会更改。

与带有令牌的 URL 相比,使用 ETags 有什么优势吗?

0 投票
1 回答
925 浏览

case-sensitive - HTTP ETag 是否应该区分大小写?

我正在创建一个库,用于在 Web 服务器上通过 HTTP 处理客户端缓存(即处理 If-Match、If-Modified-Since、If-None-Match 和 If-Unmodified-Since HTTP 标头),并且我我目前正在研究 ETags(实体标签)。我的问题是 ETag 应该区分大小写还是不区分大小写?我一直在查看 RFC 2616 ( http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html ) 并没有指定。

我只能假设这意味着它们应该区分大小写,但我想确保我遵循标准。

0 投票
1 回答
4571 浏览

asp.net - ETags、IIS7、内核缓存策略 (enableKernelCache)

两部分问题(部分密切相关):使用 IIS7 采用的默认 OOTB ETag 策略,为什么我们在浏览页面时看不到 If-None-Match/304 交互?

例如,为空缓存请求返回的标头是:

...但随后对该页面的访问不会为图像生成 304 往返?

此外,IIS7 的默认applicationHost文件具有以下 (1):

enableKernelCache='true'是否扩展到所有静态文件,使您无需显式注册扩展以授予CacheUntilChange作为内核策略 (2):

(1) %systemroot%\System32\inetsrv\config\applicationHost.config

(2) http://labs.episerver.com/en/Blogs/Per/Archive/2009/3/Configuring-cache-expiration-on-IIS-7/

0 投票
1 回答
170 浏览

emacs - Emacs Etags 返回到起始缓冲区/位置

我在缓冲区 A 中并使用 M-。在某个函数名上,它让我跳转到缓冲区 B。从那个函数中,我使用 M-。再次将我跳转到缓冲区 C。现在我已经看到了我想要的内容并想返回缓冲区 A。我不知道在不打开缓冲区列表并找到我所在的缓冲区或记住缓冲区的情况下执行此操作的命令缓冲区的名称并输入它。你如何解决这个问题?

0 投票
2 回答
2866 浏览

c - 了解 `ctags -e` 文件格式(emacs 的 ctags)

我正在使用“ExuberantCtags”,也称为“ctags -e”,也称为“etags”

我试图了解由 etags 命令生成的 TAGS 文件格式,特别是我想了解 TAGS 文件的第 2 行。

维基百科说第 2 行是这样描述的:

实际上,尽管 TAGS 文件 line:2 for "foo.c" 看起来像这样

我的困惑是它究竟是如何找到这个数字的:1683

我知道这是“tag_definition”的大小,所以我想知道什么是“tag_definition”?

我曾尝试查看ctags 源代码,但也许比我更擅长 C 的人会更成功地弄清楚这一点。

谢谢!

编辑#2:

好吧,所以如果我理解正确的话,“79”是指 TAGS 文件中从 79 到并包括“91^J”的字节数。

完全有道理。

现在这个例子维基百科中的数字 20、59、91 指的是 {byte_offset}

{byte_offset} 偏移量是多少?

感谢所有的帮助肯!

0 投票
2 回答
1128 浏览

ruby-on-rails - 测试和生产环境中的错误 ETag 值

我正在使用这里描述的 Rails 的新缓存解决方案。

开发环境工作正常,但测试生产发送无效ETag标头忽略stale?函数的参数。

这是我的一个控制器的相应部分:

stale?方法ActionController::Base调用fresh_when设置对象的方法etagResponse其代码如下:

如果我在每个环境中都得到它,模型Category就会发送正确的:cache_key

所以我根本不明白发生了什么,因为当我http://localhost:3000/admin/categories/开发环境中选择 URL 时,ETag每次保存时都会发生变化,Category但在测试生产中却没有。

我已经用webrickThin测试过了