C# 浏览器中的全球化、缓存控制和HTTP日期

C# 浏览器中的全球化、缓存控制和HTTP日期,c#,internationalization,cross-browser,globalization,C#,Internationalization,Cross Browser,Globalization,我需要关于浏览器的教育,以及他们如何在HTTP头中发送最新信息。我担心如果用户使用不同的浏览器或本地化,我将无法进行字符串比较 目前,我有这样的代码来处理请求: DateTime dt = getLastModified(someResourceHandle); if(Request.Headers["If-Modified-Since"] == dt.ToString("R")/*RFC1123*/) { // return HTTP 304 (Not Modified) } el

我需要关于浏览器的教育,以及他们如何在HTTP头中发送最新信息。我担心如果用户使用不同的浏览器或本地化,我将无法进行字符串比较

目前,我有这样的代码来处理请求:

DateTime dt = getLastModified(someResourceHandle);
if(Request.Headers["If-Modified-Since"] == dt.ToString("R")/*RFC1123*/) { 
     // return HTTP 304 (Not Modified)
} else {
     getFullResource(someResourceHandle);
}
目标:我不希望它破裂

因此,我从两个浏览器中检查了请求头:

当我使用IE时,以英语作为我的语言:

Accept-Language: en-us
If-Modified-Since: Tue, 30 Jun 2009 15:52:19 GMT
当我使用IE时,法语(比利时)作为我的语言(我希望是“mar”而不是“Tue”):

不管怎样,我从Firefox获得了以下信息:

Accept-Language: en-us,en;q=0.5
If-Modified-Since: Tue, 30 Jun 2009 15:52:19 GMT
这对我来说似乎很好,因为日期似乎都使用英文缩写和单一格式(RFC 1123)——但我不确定这是否适用于所有主要浏览器、所有全球化和操作系统(我只能在Windows机器上进行测试)


我做得对吗?

是的,这适用于所有浏览器。是HTTP规范建立了这个头的格式,据我所知,在这种情况下,所有浏览器都是兼容的

如果修改自和上次修改的标题不受Accept语言(它指的是正文而不是标题)的影响,则此选项无效

Accept-Language: en-us,en;q=0.5
If-Modified-Since: Tue, 30 Jun 2009 15:52:19 GMT