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

发布于 2024-08-29 18:36:08 字数 150 浏览 9 评论 0原文

我使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

残龙傲雪 2024-09-05 18:36:08

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

想法:

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

那么...您想要使用 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:

  • You ask to stackoverflow.com the image logo.png
  • stackoverflow.com will answer to you with a HTTP 304 (content not modified, etag: XXXXXX)
  • Your browser before ask the image again will check the cache for a resource called: logo.png, from the website: stackoverflow, with the etag: XXXXXXX
  • If the browser find it, it will load the image from the cache, without downloading
  • If it can't find it, it will ask again to the web server to download it.

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.

吾家有女初长成 2024-09-05 18:36:08

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).

镜花水月 2024-09-05 18:36:08

如果可能,删除 Etag

最好的缓存方法是 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 请求:

只需 3 毫秒即可下载 2.9KB
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 毫秒之外,它还会释放另一个资源的连接。


这是来自 Intel 的 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

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 a max-age header.

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

These are wise also, (Example Content Type is only for HTML)

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

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)

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 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

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文