我需要有关浏览器以及它们如何在 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”):
Accept-Language: fr-be
If-Modified-Since: Tue, 30 Jun 2009 15:52:19 GMT
无论如何,我从 Firefox 得到这个:
Accept-Language: en-us,en;q=0.5
If-Modified-Since: Tue, 30 Jun 2009 15:52:19 GMT
这对我来说看起来不错,因为日期似乎都使用英文缩写和单一格式(RFC 1123) - 但我不确定这是否适用于所有主要浏览器以及所有全球化和操作系统(我只可以在 Windows 机器上进行测试)。
我做对了吗?