{"id":147,"date":"2009-05-26T10:16:13","date_gmt":"2009-05-26T09:16:13","guid":{"rendered":"http:\/\/soi57.net\/articles\/?p=147"},"modified":"2020-09-08T15:56:28","modified_gmt":"2020-09-08T14:56:28","slug":"etags","status":"publish","type":"post","link":"https:\/\/soi57.net\/blog\/etags\/","title":{"rendered":"Etags"},"content":{"rendered":"<p>Los <strong>Etags<\/strong> son un mecanismo para que los servidores webs y los navegadores determinen si la copia del compomente que reside en la <strong>cache del navegador <\/strong>coincide con la original en el servidor ( con componentes nos referimos a componentes de una p\u00e1gina web: im\u00e1genes, scripts, hojas de estilo, etc.) Los <strong>Etags<\/strong> fueron a\u00f1adidos como herramienta m\u00e1s flexible para validar elementos que la fecha de <strong>last-modified<\/strong> (ultima modificaci\u00f3n). El servidor especifica el <strong>Etag<\/strong> del componente usando  la cabecera de respuesta <strong>ETAg<\/strong>.<\/p>\n<blockquote><p>HTTP\/1.1 200 OK<br \/>\nLast-Modified: Tue, 12 Dec 2006 03:03:59 GMT<br \/>\nETag: \u00ab10c24bc-4ab-457e1c1f\u00bb<br \/>\nContent-Length: 12195<\/p><\/blockquote>\n<p>Despu\u00e9s, si el <strong>navegador <\/strong>tiene que validar el componente, usa la cabecera If-None-Match para responder al servidor. Si los ETags concuerdan un <strong>codigo 304<\/strong> es devuelto, reduciendo por ejemplo en este caso la respuesta en 12195 bytes.<\/p>\n<blockquote><p>GET \/i\/yahoo.gif HTTP\/1.1<br \/>\nHost: us.yimg.com<br \/>\nIf-Modified-Since: Tue, 12 Dec 2006 03:03:59 GMT<br \/>\nIf-None-Match: \u00ab10c24bc-4ab-457e1c1f\u00bb<br \/>\nHTTP\/1.1 304 Not Modified<\/p><\/blockquote>\n<p>El problema de los <strong>ETags<\/strong> es que normalmente se definen a partir de atributos que  los hacen \u00fanicos para el servidor espec\u00edfico que aloja la p\u00e1gina. Los <strong>Etags <\/strong>no concordar\u00e1n cuando el navegador descarga el componente original de un servidor y luego intenta validarlo contra otro, como puede ocurrir en entornos en los que se balancea la carga entre varios servidores. Por defecto, tanto <strong>Apache<\/strong> como <strong>IIS<\/strong> incrustan datos in el Etag que reducen dram\u00e1ticamente las probabilidades de que los <strong>Etags<\/strong> coincidan en <strong>entornos multiservidor.<\/strong><\/p>\n<p>El formato de <strong>ETag <\/strong>para <strong>Apache 1.3 y 2.x<\/strong> is<strong> inode-size-timestamp<\/strong>. Aunque un fichero pueda residir en el mismo directorio en m\u00faltiples servidores, y tengan el mismo tama\u00f1o, permisos, timestamp,etc., su n\u00famero de iniod es diferente de un servidor a otro.<\/p>\n<p><strong>IIS 5.0 y 6.0<\/strong> tienen un problema parecido con los <strong>ETags<\/strong>. El<strong> formato de los ETags<\/strong> en IIS es Filetimestamp. <strong>ChangeNumber<\/strong>. Un <strong>ChangeNumber<\/strong> is un contador usado para registrar cambios de configuraci\u00f3n en IIS. Es muy poco probable que el <strong>ChangeNumber<\/strong> sea el mismo en varios servidores que sirvan la misma p\u00e1gina.<\/p>\n<p>El resultado final es que los <strong>Etags<\/strong> generados por <strong>Apache o IIS<\/strong> para el  mismo componente no concordar\u00e1 de un servidor a otro. Si los <strong>Etags<\/strong> no concuerdan, el usuario no recibir\u00e1 la r\u00e1pida respuesta 304, que es para lo que los ETags est\u00e1n dise\u00f1ados. En lugar de esto, recibir\u00e1n un <strong>c\u00f3digo de respuesta 200<\/strong> junto con todo el componente. Si est\u00e1s alojando tu web en s\u00f3lo un servidor no es un problema. Pero si tienes varios servidores sirviendo el contenido tendr\u00e1n un mayor consumo de ancho de banda, los proxies no cachearan tu contenido y el usuario final notar\u00e1 las p\u00e1ginas m\u00e1s lentas. Incluso si los compomentes tienen una <strong>cabecera Expires<\/strong> mucho tiempo adelante (futuro) un GET condicional se har\u00e1 cada vez que se pulse Reload o Refresh.<\/p>\n<p>Si no est\u00e1s obteniendo ninguna mejora por el uso de los <strong>Etags<\/strong> lo mejor es desactivar completamente su uso. La cabecera Last-Modified validar\u00e1 en base al timestamp del componente. Eliminando los <strong>Etags<\/strong> se reducir\u00e1 el tama\u00f1o de las cabeceras HTTP tanto en la respuestas como en las peticiones. Para desactivarlas en IIS puedes mirar <a href=\"http:\/\/support.microsoft.com\/?id=922733 \">este art\u00edculo<\/a> . En<strong> Apache,<\/strong> simplemente a\u00f1adiendo esta l\u00ednea al httpd.conf.<\/p>\n<p><strong>FileETag none<\/strong><\/p>\n<p>Traducci\u00f3n del <a href=\"http:\/\/developer.yahoo.net\/blog\/archives\/2007\/07\/high_performanc_11.html\">art\u00edculo High Perfomance Web Sites: Rule 13 &#8211; Configure Etags<\/a> .<br \/>\n<a href=\"http:\/\/httpd.apache.org\/docs\/2.0\/es\/mod\/core.html#fileetag\">Documentaci\u00f3n apache Etags<\/a><\/p>\n<div style='text-align:left' class='yasr-auto-insert-visitor'><\/div>","protected":false},"excerpt":{"rendered":"<p>Los Etags son un mecanismo para que los servidores webs y los navegadores determinen si la copia del compomente que reside en la cache del navegador coincide con la original &hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"yasr_overall_rating":0,"yasr_post_is_review":"","yasr_auto_insert_disabled":"","yasr_review_type":"","footnotes":""},"categories":[97],"tags":[599,617],"class_list":["post-147","post","type-post","status-publish","format-standard","hentry","category-tecnologia","tag-apache","tag-etags"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Etags<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/soi57.net\/blog\/etags\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Etags\" \/>\n<meta property=\"og:description\" content=\"Los Etags son un mecanismo para que los servidores webs y los navegadores determinen si la copia del compomente que reside en la cache del navegador coincide con la original &hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/soi57.net\/blog\/etags\/\" \/>\n<meta property=\"og:site_name\" content=\"Android, administracion de sistemas y seo\" \/>\n<meta property=\"article:published_time\" content=\"2009-05-26T09:16:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-09-08T14:56:28+00:00\" \/>\n<meta name=\"author\" content=\"root\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/soi57.net\/blog\/etags\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/soi57.net\/blog\/etags\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/soi57.net\/blog\/#\/schema\/person\/9410e0a8d6f61a74f9f82f2229ab79d7\"},\"headline\":\"Etags\",\"datePublished\":\"2009-05-26T09:16:13+00:00\",\"dateModified\":\"2020-09-08T14:56:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/soi57.net\/blog\/etags\/\"},\"wordCount\":570,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/soi57.net\/blog\/#organization\"},\"keywords\":[\"apache\",\"etags\"],\"articleSection\":[\"tecnologia\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/soi57.net\/blog\/etags\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/soi57.net\/blog\/etags\/\",\"url\":\"https:\/\/soi57.net\/blog\/etags\/\",\"name\":\"Etags\",\"isPartOf\":{\"@id\":\"https:\/\/soi57.net\/blog\/#website\"},\"datePublished\":\"2009-05-26T09:16:13+00:00\",\"dateModified\":\"2020-09-08T14:56:28+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/soi57.net\/blog\/etags\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/soi57.net\/blog\/etags\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/soi57.net\/blog\/etags\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/soi57.net\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Etags\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/soi57.net\/blog\/#website\",\"url\":\"https:\/\/soi57.net\/blog\/\",\"name\":\"Android, administracion de sistemas y seo\",\"description\":\"soi57.net\/blog\",\"publisher\":{\"@id\":\"https:\/\/soi57.net\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/soi57.net\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/soi57.net\/blog\/#organization\",\"name\":\"Soi57.Net\",\"url\":\"https:\/\/soi57.net\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/soi57.net\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/soi57.net\/blog\/wp-content\/logo_soi57.net_half.jpg\",\"contentUrl\":\"https:\/\/soi57.net\/blog\/wp-content\/logo_soi57.net_half.jpg\",\"width\":342,\"height\":77,\"caption\":\"Soi57.Net\"},\"image\":{\"@id\":\"https:\/\/soi57.net\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/soi57.net\/blog\/#\/schema\/person\/9410e0a8d6f61a74f9f82f2229ab79d7\",\"name\":\"root\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/soi57.net\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6e87f10096d6c8f82a9bc2ddc0f3a223?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6e87f10096d6c8f82a9bc2ddc0f3a223?s=96&d=mm&r=g\",\"caption\":\"root\"},\"sameAs\":[\"http:\/\/soi57.net\"]},false]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Etags","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/soi57.net\/blog\/etags\/","og_locale":"es_ES","og_type":"article","og_title":"Etags","og_description":"Los Etags son un mecanismo para que los servidores webs y los navegadores determinen si la copia del compomente que reside en la cache del navegador coincide con la original &hellip;","og_url":"https:\/\/soi57.net\/blog\/etags\/","og_site_name":"Android, administracion de sistemas y seo","article_published_time":"2009-05-26T09:16:13+00:00","article_modified_time":"2020-09-08T14:56:28+00:00","author":"root","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/soi57.net\/blog\/etags\/#article","isPartOf":{"@id":"https:\/\/soi57.net\/blog\/etags\/"},"author":{"name":"root","@id":"https:\/\/soi57.net\/blog\/#\/schema\/person\/9410e0a8d6f61a74f9f82f2229ab79d7"},"headline":"Etags","datePublished":"2009-05-26T09:16:13+00:00","dateModified":"2020-09-08T14:56:28+00:00","mainEntityOfPage":{"@id":"https:\/\/soi57.net\/blog\/etags\/"},"wordCount":570,"commentCount":0,"publisher":{"@id":"https:\/\/soi57.net\/blog\/#organization"},"keywords":["apache","etags"],"articleSection":["tecnologia"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/soi57.net\/blog\/etags\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/soi57.net\/blog\/etags\/","url":"https:\/\/soi57.net\/blog\/etags\/","name":"Etags","isPartOf":{"@id":"https:\/\/soi57.net\/blog\/#website"},"datePublished":"2009-05-26T09:16:13+00:00","dateModified":"2020-09-08T14:56:28+00:00","breadcrumb":{"@id":"https:\/\/soi57.net\/blog\/etags\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/soi57.net\/blog\/etags\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/soi57.net\/blog\/etags\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/soi57.net\/blog\/"},{"@type":"ListItem","position":2,"name":"Etags"}]},{"@type":"WebSite","@id":"https:\/\/soi57.net\/blog\/#website","url":"https:\/\/soi57.net\/blog\/","name":"Android, administracion de sistemas y seo","description":"soi57.net\/blog","publisher":{"@id":"https:\/\/soi57.net\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/soi57.net\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/soi57.net\/blog\/#organization","name":"Soi57.Net","url":"https:\/\/soi57.net\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/soi57.net\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/soi57.net\/blog\/wp-content\/logo_soi57.net_half.jpg","contentUrl":"https:\/\/soi57.net\/blog\/wp-content\/logo_soi57.net_half.jpg","width":342,"height":77,"caption":"Soi57.Net"},"image":{"@id":"https:\/\/soi57.net\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/soi57.net\/blog\/#\/schema\/person\/9410e0a8d6f61a74f9f82f2229ab79d7","name":"root","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/soi57.net\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6e87f10096d6c8f82a9bc2ddc0f3a223?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6e87f10096d6c8f82a9bc2ddc0f3a223?s=96&d=mm&r=g","caption":"root"},"sameAs":["http:\/\/soi57.net"]},false]}},"yasr_visitor_votes":{"stars_attributes":{"read_only":false,"span_bottom":false},"number_of_votes":0,"sum_votes":0},"_links":{"self":[{"href":"https:\/\/soi57.net\/blog\/wp-json\/wp\/v2\/posts\/147","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/soi57.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/soi57.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/soi57.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/soi57.net\/blog\/wp-json\/wp\/v2\/comments?post=147"}],"version-history":[{"count":14,"href":"https:\/\/soi57.net\/blog\/wp-json\/wp\/v2\/posts\/147\/revisions"}],"predecessor-version":[{"id":161,"href":"https:\/\/soi57.net\/blog\/wp-json\/wp\/v2\/posts\/147\/revisions\/161"}],"wp:attachment":[{"href":"https:\/\/soi57.net\/blog\/wp-json\/wp\/v2\/media?parent=147"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/soi57.net\/blog\/wp-json\/wp\/v2\/categories?post=147"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/soi57.net\/blog\/wp-json\/wp\/v2\/tags?post=147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}