我使用php和.htaccess动态生成htm文件。我在某处读到了我应该为text / html类型的文件删除Etags?那是对的吗?我想知道我是否使用etags,如果我不更改内容,我可以节省一些带宽。如果你们能告诉我是否可以使用etags作为htm文件,我将不胜感激。
答案 0 :(得分:0)
据我所知,Etag是一个http头,是由缓存系统使用的HTTP服务器生成的。
这个想法:
所以......对于你想要的东西使用ETags?
如果你想了解更多有关ETag的信息,可以下载HttpFox for firefox。
Apache拥有自己的缓存系统,在下载或需要任何“静态”下载时使用它,如html文件和图像。
如果你想在动态环境中进行,你必须自己实现它。
答案 1 :(得分:0)
即使使用动态内容(如php脚本),Etags也可以加速您的网站。 特别是在移动连接上,这很重要,因为连接速度较慢。 我在某些移动网站上使用ETag标头,如下所示:
https://gist.github.com/oliworx/4951478
提示:您不得在页面中包含当前时间或其他经常更改的内容,因为这可以防止客户端(浏览器)缓存它。
答案 2 :(得分:0)
最佳缓存方法是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(非常快)
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毫秒
DNS Lookup: 103 ms
Initial Connection: 219 ms
Time to First Byte: 222 ms
Content Download: ms
Bytes In (downloaded): 0.1 KB