标签: etag

为什么不是我的javascript和css缓存?

它似乎只有javascript和CSS不缓存...但图像缓存.

我正在使用Firebug,当我刷新页面时,我在Firebug中注意到js/css 有很多200个HTTP响应,但我收到的所有图像都有304个HTTP代码(内容未修改).所以看来我的JS和CSS不是缓存.

此外,当使用YSlow帮助确定我的JS/CSS内容没有缓存的问题时,它告诉我:

有4个组件配置错误的ETag

下面列出的是我的.htaccess文件

Options -Indexes
Options +FollowSymLinks  

# Enable ETag
FileETag MTime Size

# Set expiration header
ExpiresActive on
ExpiresDefault "access plus 1 week"

# Compress some text file types
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml application/x-javascript text/javascript application/javascript application/json

# Deactivate compression for buggy browsers
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# Set header information for proxies
Header append Vary User-Agent
Run Code Online (Sandbox Code Playgroud)

知道我的.htaccess访问文件有什么问题阻止它缓存我的CSS或JavaScript吗?

apache .htaccess etag caching http

10
推荐指数
2
解决办法
1万
查看次数

收到ETag后,IE9假装304

我遇到了AJAX和Internet Explorer 9的问题:它在收到对初始etagged GET的响应后停止轮询我们的服务器.

它假装发出响应请求,如"响应HTTP/1.1 304未修改,状态200正常"(是的,一个响应中的两个不同的状态代码)和相同的ETag(应该随时间变化)但它们实际上都没有出现在服务器中日志.

此问题仅出现在IE中,相同的代码在Chrome和FF中运行良好.

也许将{cache:false}传递给jQuery.ajax()可能有所帮助,但我想知道是否有办法在服务器端解决问题.

我们的ETag使用可能存在错误.

谢谢!

etag internet-explorer xmlhttprequest http-status-code-304

10
推荐指数
1
解决办法
4526
查看次数

ETag和If-None-Match HTTP标头不起作用

我的网络服务器中有一个文件,我每次访问它时都会将其下载到我的应用程序,因为它可能会更改文件内容但是如果它被更改我想下载那个时间只有这样才能保存带宽而且幸运的是那是什么此ETagIf-None-Match 标头字段用于.

  • 当我第一次发出请求时,我从HTTP响应头中检索ETag

第一次请求文件

  • 在随后的下载该文件的请求中,我附加了If-None-Match头域Etag值,这样如果没有变化那么我会得到HTTP响应状态码304,否则如果有的话我会得到200更改文件.

    第二次请求相同的文件

注意:

当我在Chrome 中使用高级REST客户端应用程序尝试上述步骤时,它应该可以正常工作但是当我在iOS中尝试时,我总是得到响应代码200,但它应该给我304后续请求.

这是我使用的示例代码

var request1 =  NSMutableURLRequest(URL:NSURL(string: "http://10.12.1.101/Etag/ringtone1.mp3")!)
let Etagvalue="\"36170-52c1cc36d9b40\""
var session1 = NSURLSession.sharedSession()
request1.HTTPMethod = "GET"
var err: NSError?
request1.addValue(Etagvalue, forHTTPHeaderField: "If-None-Match")

var task = session1.dataTaskWithRequest(request1, completionHandler: {data, response, error -> Void in
       print("response: \(response)")

})
Run Code Online (Sandbox Code Playgroud)

这是回复

响应:可选({URL:http : //10.12.1.101/Etag/ringtone1.mp3 } {状态代码:200,headers {"Accept-Ranges"= bytes; Connection ="Keep-Alive";"Content-Length" = 221552;"Content-Type"="audio/mpeg"; Date ="Wed,2016年2月24日14:57:53 GMT"; Etag ="\"36170-52c1cc36d9b40 \"";"Keep-Alive"=" timeout = 5,max = 100";"Last-Modified"="Fri,2016年2月19日10:15:33 GMT"; …

etag ios nsurlsession if-none-match swift

10
推荐指数
1
解决办法
2998
查看次数

在React Native应用程序中使用ETag缓存JSON响应

在React Native应用程序中实现以下方案的最佳方法是什么?

  1. 向服务器发出HTTP请求,获取JSON响应和ETag标头.
  2. 保存此JSON响应的方式即使在用户重新启动应用程序后仍会保留.
  3. 每当重复此HTTP请求时,发送If-None-Match标头.
    1. 当您收到"未修改"响应时,请使用持久缓存中的版本.
    2. 当您获得"成功"响应(意味着响应已更改)时,使持久缓存无效,保存新响应.

React Native是否有一个开箱即用的组件?如果没有,人们用来处理这个问题的最常见方式是什么?

etag caching http react-native

10
推荐指数
1
解决办法
1631
查看次数

Rails - etags与页面缓存(文件缓存)

使用etags/stale会有什么好处?/ fresh_when?而不是页面缓存(在文件缓存上)?

Apache自动处理静态文件的etags,但即使它没有,页面缓存仍然会更好,因为Rails应用程序甚至不会被调用.

那么,在什么情况下我会使用Rails提供的方法(过时?/ fresh_when?)?

etag caching ruby-on-rails

9
推荐指数
1
解决办法
5252
查看次数

有什么理由不在Django中使用USE_ETAGS和CommonMiddleware?

我能想到的唯一原因是计算ETag可能很昂贵.如果页面变化非常快,浏览器的缓存很可能会被无效ETag.在这种情况下,计算这ETag将浪费时间.另一方面,304在可能的情况下给出响应可以最小化传输所花费的时间.ETag当用Django实现时,CommonMiddleware什么时候可能成为净胜利者有什么好的指导方针?

django performance etag caching http

9
推荐指数
1
解决办法
937
查看次数

如何在c#中生成http ETag?

给定一个文件作为http请求的一部分返回.为该文件创建ETag的正确方法是什么?

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.19

我看过它有几种方法

c# etag http

9
推荐指数
2
解决办法
8816
查看次数

Rails中的静态操作的缓存/ Etag 4

由于Rails 4删除了页面缓存和动作缓存,我想知道什么是Rails 4方式缓存一个没有变量且在视图中只有html的动作?我应该在视图中片段缓存静态html吗?当没有模型将其设置为过期时,如何设置etag/fresh_when?我很难找到一个示例或约定来缓存什么应该是最容易缓存的页面.

需要注意的是,虽然视图完全是静态的,但页面仍然具有动态导航栏,具体取决于用户是否已登录.你如何处理这样的静态页面,而不采取行动缓存,因为它已被删除,并且约定已设置为不使用gem版本?

例:

class HomesController < ApplicationController    
  def index
  end
end
Run Code Online (Sandbox Code Playgroud)

家/ index.html.erb

<div>A bunch of normal html tags with no erb</div>
Run Code Online (Sandbox Code Playgroud)

编辑: 基于@ severin的回答和我自己的研究,这是我到目前为止所提出的.

class HomesController < ApplicationController    
  def index
    fresh_when(["some-identifier", current_user, flash])
  end
end
Run Code Online (Sandbox Code Playgroud)

此外,我正在使用https://github.com/n8/bust_rails_etags重置部署后的所有etags,因为视图可能在部署之间发生了变化.我认为这很好地涵盖了etag,虽然我仍然很好奇是否会自动包含一些关于视图的标识符以及是否需要"some-idnetifier"?是否会出现问题,有时current_user和flash会为零?

现在关于片段缓存静态内容的第二点.我假设我做了:

cache "v1" do
  all my html
end
Run Code Online (Sandbox Code Playgroud)

我必须记住在页面更改时始终更改缓存标识符,否则我的应用程序将提供过时的内容.任何方式自动化这个或已经由rails处理?只是缓存最后一次更新视图或更聪明的东西会很好,所以我不必跟踪我的静态内容何时被更改.

etag caching ruby-on-rails ruby-on-rails-4

9
推荐指数
1
解决办法
3048
查看次数

通过https SSL进行Etags和最后修改?

是否可以通过安全的HTTPS连接将HTTP缓存用于条件GET请求?我已经通过非安全HTTP进行缓存,但是当我切换到HTTPS时,浏览器会停止发送if-none-match和if-modified-since标头,因此缓存会中断.我尝试了各种Cache-Control设置,如public,max-age = 3600和whatnot,no dice.

这种情况在Safari和Chrome中都会发生,因此我假设SSL以某种方式打破了它.是否不允许通过SSL进行缓存?

而且要明确的是,服务器确实正确设置了etag和最后修改的标头,但根据Chrome开发人员的工具,浏览器不会在请求中发送if-none-match和if-modified-since.

谢谢你的帮助.

ssl etag caching last-modified http-caching

9
推荐指数
1
解决办法
2282
查看次数

nginx - 使用gzip时缺少etag

如果我设置nginx使用gzip,它会删除任何etag标头.

这背后的原因是,鉴于gzip具有各种压缩级别,相同的资源不能逐字节相同.

但是nginx也删除了一个弱etag,这意味着资源在语义上是等价的.这似乎是nginx的错误行为.

我错过了什么吗?如果没有,有没有办法解决这个问题?

维基

etag gzip http nginx

9
推荐指数
1
解决办法
3988
查看次数