我应该为htm和php页面删除Etag吗?

时间:2010-04-23 01:57:19

标签: etag

我使用php和.htaccess动态生成htm文件。我在某处读到了我应该为text / html类型的文件删除Etags?那是对的吗?我想知道我是否使用etags,如果我不更改内容,我可以节省一些带宽。如果你们能告诉我是否可以使用etags作为htm文件,我将不胜感激。

3 个答案:

答案 0 :(得分:0)

据我所知,Etag是一个http头,是由缓存系统使用的HTTP服务器生成的。

这个想法:

  • 您向stackoverflow.com询问图片logo.png
  • stackoverflow.com将使用HTTP 304(内容未修改,etag:XXXXXX)回答您
  • 在再次询问图片之前,您的浏览器将检查缓存中是否有一个名为:logo.png的资源,来自网站:stackoverflow,其中包含etag:XXXXXXX
  • 如果浏览器找到它,它将从缓存加载图像,而不下载
  • 如果找不到,它会再次要求网络服务器下载。

所以......对于你想要的东西使用ETags?

如果你想了解更多有关ETag的信息,可以下载HttpFox for firefox。

Apache拥有自己的缓存系统,在下载或需要任何“静态”下载时使用它,如html文件和图像。

如果你想在动态环境中进行,你必须自己实现它。

答案 1 :(得分:0)

即使使用动态内容(如php脚本),Etags也可以加速您的网站。 特别是在移动连接上,这很重要,因为连接速度较慢。 我在某些移动网站上使用ETag标头,如下所示:

https://gist.github.com/oliworx/4951478

提示:您不得在页面中包含当前时间或其他经常更改的内容,因为这可以防止客户端(浏览器)缓存它。

答案 2 :(得分:0)

尽可能删除Etags

最佳缓存方法是max-age。 W3C要求浏览器必须使用max-age。

当使用max-age时,浏览器将使用缓存版本,甚至不查询服务器。

这也意味着如果要替换网页上的资源(例如CSS,JS,IMG,链接),则应重命名资源。

下一个最好的缓存方法是Expires 在每个包含echo的PHP页面中,始终包含max-age标题并不是一个坏主意。

header('Cache-Control: max-age=31536000');

这些也是明智的(示例内容类型仅适用于HTML)

header('Content-Type: text/html; charset=utf-8');
header('Connection: Keep-Alive');
header('Keep-Alive: timeout=50, max=100');

eTag没有过期。每次都必须检查资源。

如果您使用的是max-age或Expires,浏览器将不会发出HTTP请求来检查资源。

当包含在max-age和/或expires时,会浪费听众空间并浪费一些服务器CPU周期来生成或查找eTag值。

eTag的问题是除非资源非常大,否则它几乎没有什么好处。在HTTP请求中,与连接和等待时间相比,传输数据所需的时间通常很短。

使用eTag,浏览器仍然需要执行HTTP请求。当eTag没有改变时,那么响应是304.


以下是典型的HTTP请求:

下载2.9KB只需3毫秒 请求时间为454毫秒。 + 58ms DNS(非常快)

enter image description here

DNS Lookup: 58 ms
Initial Connection: 192 ms
Time to First Byte: 262 ms
Content Download: 3 ms
Bytes In (downloaded): 2.9 KB

eTag可以节省3毫秒。

如果资源被缓存,除了保存400-500毫秒之外,它还会释放另一个资源的连接。


以下是来自英特尔的301回复 441毫秒

enter image description here

DNS Lookup: 103 ms
Initial Connection: 219 ms
Time to First Byte: 222 ms
Content Download: ms
Bytes In (downloaded): 0.1 KB