我应该删除 htm 和 php 页面的 Etag 吗?
我使用 php 和 .htaccess 动态生成 htm 文件。我在某处读到我应该删除 text/html 类型文件的 Etags?这是正确的吗?我想知道我是否使用 etags,如果我不更改内容,我可以节省一些带宽。如果你们能告诉我是否可以对 htm 文件使用 etag,我将不胜感激。
I generate htm files dynamically using php and .htaccess. I read somewhere that I should remove Etags for files of type text/html? Is that correct? I am wondering if I use etags and If i don't change the content, I could save some bandwidth. I would appreciate if you guys could tell me if I can use etags for htm files.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
据我所知,Etag 是一个 http 标头,由缓存系统使用的 HTTP 服务器生成。
想法:
那么...您想要使用 ETags 的目的是什么?
如果您想了解有关 ETag 的更多信息,可以下载 HttpFox for firefox。
Apache 有自己的缓存系统,当您下载或需要任何“静态”下载(例如 html 文件和图像)时,就会使用它。
如果您想在动态上下文中执行此操作,则必须自己实现。
As far as i know the Etag is an http header is generated by the HTTP server used by the cache system.
The idea:
so... for what propose you want use the ETags ?
If you want understand more about the ETags could be interesting download HttpFox for firefox.
Apache have his own cache system and it's used when you download or require any "static" download, like html files and images.
If you want do it on dynamic context you must implement it by yourself.
Etag 可以有效地加快您的网站速度,即使是动态内容(如 php 脚本)也是如此。
特别是在移动连接上,这一点很重要,因为连接速度较慢。
我在一些移动网站上使用 ETag 标头,如下所示:
https://gist.github.com/oliworx/4951478< /a>
提示:您不得在页面中包含当前时间或其他经常更改的内容,因为这会阻止客户端(浏览器)对其进行缓存。
Etags can be usefull speeding up your website, even with dynamic content (like php scripts).
Especially on mobile connections this is important, since connection speed is slower.
I use ETag headers on some mobile websites like this:
https://gist.github.com/oliworx/4951478
Hint: You must not include curent time or other often changing content in the page, because this prevents it from beeing cached by the client (the browser).
如果可能,删除 Etag
最好的缓存方法是 max-age。 W3C 要求浏览器必须使用 max-age(如果可用)。
当使用 max-age 时,浏览器将使用缓存版本,甚至不查询服务器。
这也意味着如果您要替换资源在您的网页上(例如CSS、JS、IMG、链接),您应该重命名资源。
下一个最佳缓存方法是Expires。
在每个带有
echo
的 PHP 页面中,始终包含max-age
标头并不是一个坏主意。这些也是明智的,(示例内容类型仅是对于 HTML)
eTag 没有有效期。每次都必须检查资源。
如果您使用 max-age 或 Expires,浏览器将不会发出 HTTP 请求来检查资源。
当包含 max-age 和/或 expires 时,它是一个浪费听者空间并浪费一些服务器 CPU 周期来生成或查找 eTag 值。
eTag 的问题是,除非资源非常大,否则它几乎没有什么好处。在 HTTP 请求中,与连接和等待时间相比,传输数据所需的时间通常很短。
使用 eTag,浏览器仍然必须执行 HTTP 请求。当 eTag 没有改变时,则响应为 304。
这是一个典型的 HTTP 请求:
只需 3 毫秒即可下载 2.9KB
454 毫秒请求时间。 + 58ms DNS(非常快)
eTag 将节省 3 毫秒.
如果资源被缓存,除了节省 400-500 毫秒之外,它还会释放另一个资源的连接。
这是来自 Intel 的 301 响应
441 毫秒
Remove Etags if possible
The best cache method is max-age. W3C mandates that Browsers must use max-age if available.
When max-age is used the Browser will use the cached version and not even query the Server.
This also means if you are replacing a resource on you web page (e.g. CSS, JS, IMG, link), you should rename the resource.
The next best caching method is Expires.
In every PHP page with an
echo
it is not a bad idea to always include amax-age
header.These are wise also, (Example Content Type is only for HTML)
eTag has no expiration. The resource must be checked every time.
If you are using max-age or Expires, the Browser will not make an HTTP request to check the resource.
When included with max-age and or expires, it is a waste of hearer space and wastes a few Server CPU cycles to generate or lookup the eTag Value.
The problem with eTag is unless the resource is very large it will have little benefit. In an HTTP Request, the time required for Transmission of the data is often minimal compared to the connect and wait times.
With eTag the Browser still has to do an HTTP Request. When the eTag has not changed, then then the response is 304.
Here is a typical HTTP request:
Only 3 milliseconds to download 2.9KB
454 milliseconds request time. + 58ms DNS (very fast)
eTag would save 3 milliseconds.
If resource was cached, it would have freed the connection for another resource in addition to saving the 400-500 ms.
Here is a 301 response from Intel
441 ms