{"id":52390,"date":"2014-01-13T08:00:08","date_gmt":"2014-01-13T07:00:08","guid":{"rendered":"https:\/\/www.humanlevel.com\/sin-categorizar\/como-configurar-internet-information-server-iis-para-mejorar-el-rendimiento-y-el-seo-de-tu-web.html"},"modified":"2014-01-13T08:25:00","modified_gmt":"2014-01-13T07:25:00","slug":"how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website","status":"publish","type":"post","link":"https:\/\/www.humanlevel.com\/en\/blog\/seo\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website","title":{"rendered":"How to configure Internet Information Server (IIS) to improve the performance and SEO of your website"},"content":{"rendered":"<p><strong>Optimally configuring the web server on which you host your website is one of the key factors in the performance of your website<\/strong>. Correctly setting the parameters for<strong> compressing and caching files can significantly improve the loading speed of your page<\/strong>.<\/p>\n<p>In this article I will explain <strong>how to configure Internet Information Server (IIS)<\/strong>, one of the most used web servers nowadays together with Apache and Nginx.<\/p>\n<p>For it I am going to create the <strong>web.config<\/strong> file, which is the <strong>file in which the configuration of an ASP.NET application is specified<\/strong>. This file must always go in the root of our ASP.NET application.<\/p>\n<p>In this case, we assume that we have IIS version 7.5 and ASP.NET version 4.5, although most things would also work in ASP.NET 4.<\/p>\n<p>Next, I specify the <a href=\"https:\/\/www.humanlevel.com\/en\/digital-marketing-dictionary\/xml\" target=\"_blank\" rel=\"noopener noreferrer\">XML<\/a> web.config file with the commented options.<\/p>\n<style><!-- pre { white-space: pre-wrap; white-space: -moz-pre-wrap !important; word-wrap: break-word; } --><\/style>\n<pre class=\"prettyprint\"><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;configuration&gt;\n  &lt;appSettings&gt;\n    &lt;!-- Estos par\u00e1metros de appSettings solo funcionan en ASP.NET 4.5 o superior --&gt;\n    &lt;add key=\"ClientValidationEnabled\" value=\"true\" \/&gt;\n    &lt;!-- Con est\u00e1 opci\u00f3n especificamos que ASP.NET utilice la validaci\u00f3n no intrusiva, evitando que inserte c\u00f3digo de javascript en linea en todas las p\u00e1ginas de nuestra web --&gt;\n    &lt;add key=\"UnobtrusiveJavaScriptEnabled\" value=\"true\" \/&gt;\n  &lt;\/appSettings&gt;\n  &lt;!-- Configuraci\u00f3n de ASP.NET --&gt;\n  &lt;system.web&gt;\n    &lt;!-- \n      Especificamos el framework que utilizamos (4.5)\n      El lenguaje de programaci\u00f3n (C#)\n      Que no compile la aplicaci\u00f3n entera cada vez que hagamos un cambio en el c\u00f3digo.\n      Especificamos que utilice la compilaci\u00f3n por lotes y el tama\u00f1o m\u00e1ximo de los ensamblados generados al compilar. Esto suele funcionar bien para aplicaciones peque\u00f1as y medianas pero puede dar problemas en aplicaciones con un gran n\u00famero de archivos, se debe probar y ver la forma en la que la aplicaci\u00f3n funciona mejor.\n      Establecemos el n\u00famero m\u00e1ximo de veces que la aplicaci\u00f3n puede recompilarse parcialmente antes de reiniciar completamente. Esto es muy \u00fatil si no se hacen cambios muy a menudo en la web ya que evitamos que la aplicaci\u00f3n tenga que cargar de nuevo todo el c\u00f3digo compilado en memoria siendo los cambios transparentes para los visitantes. Si se hacen varios cambios diariamente es mejor establecer est\u00e1 opci\u00f3n a un n\u00famero menor como 5, para evitar consumir memoria de forma excesiva.\n      Especificamos que la aplicaci\u00f3n no se ejecute en modo depuraci\u00f3n.\n      --&gt;\n      &lt;compilation targetFramework=\"4.5\" defaultLanguage=\"C#\" optimizeCompilations=\"true\" batch=\"true\" maxBatchGeneratedFileSize=\"2147483647\" maxBatchSize=\"2147483647\" numRecompilesBeforeAppRestart=\"2147483647\" debug=\"false\" \/&gt;\n\n      &lt;!-- Especificamos un nombre de cookie de sesi\u00f3n corto y habilitamos la compresi\u00f3n, esta opci\u00f3n es muy \u00fatil sobre todo utilizamos el modo en el que la sesi\u00f3n se guarda en memoria (InProc) --&gt;\n      &lt;sessionState timeout=\"1440\" cookieName=\"s\" compressionEnabled=\"true\" \/&gt;\n\n      &lt;!-- Eliminamos la cabecera de la versi\u00f3n de ASP.NET para mayor seguridad --&gt;\n      &lt;httpRuntime targetFramework=\"4.5\" requestValidationMode=\"2.0\" requestPathInvalidCharacters=\"\" enableVersionHeader=\"false\" relaxedUrlToFileSystemMapping=\"true\" \/&gt;\n\n\t&lt;!-- Especificamos que las cookies enviadas no se puedan modificar desde javascript --&gt;\n\t&lt;httpCookies httpOnlyCookies=\"true\" requireSSL=\"false\" \/&gt;\n\n        &lt;!-- Especificamos el idioma y la codificaci\u00f3n de los archivos por defecto. --&gt;\n        &lt;globalization culture=\"es-ES\" uiCulture=\"es-ES\" enableBestFitResponseEncoding=\"false\" enableClientBasedCulture=\"false\" fileEncoding=\"UTF-8\" requestEncoding=\"UTF-8\" responseEncoding=\"UTF-8\" responseHeaderEncoding=\"UTF-8\" \/&gt;\n\n        &lt;!-- \n        (clientIdMode) Especificamos que los IDs de los controles se generen con el algoritmo \"Predictable\" para que sean lo m\u00e1s cortos posibles.\n        (autoEventWireUp) Evitamos que ASP.NET examine la p\u00e1gina para asignar los eventos de los controles.\n        (renderAllHiddenFieldsAtTopOfForm) Con est\u00e1 opci\u00f3n en false evitamos que en los webforms aparezcan todos los hidden en la parte superior de la p\u00e1gina.\n        --&gt;\n        &lt;pages clientIDMode=\"Predictable\" autoEventWireup=\"false\" enableEventValidation=\"true\" buffer=\"true\" compilationMode=\"Always\" enableSessionState=\"true\" enableViewState=\"true\" enableViewStateMac=\"true\" validateRequest=\"true\" renderAllHiddenFieldsAtTopOfForm=\"false\" viewStateEncryptionMode=\"Always\"&gt;&lt;\/pages&gt;\n\n       &lt;!--\n       Especificamos que se utilice la reescritura de la respuesta cuando se produce un error en la aplicaci\u00f3n en vez de hacer una redirecci\u00f3n. De esta forma logramos que los c\u00f3digos de estado devueltos sean correctos.\n       --&gt;\n       &lt;customErrors mode=\"RemoteOnly\" redirectMode=\"ResponseRewrite\" defaultRedirect=\"error.aspx?error=400\"&gt;\n         &lt;error statusCode=\"404\" redirect=\"error.aspx?error=404\" \/&gt;\n         &lt;error statusCode=\"500\" redirect=\"error.aspx?error=500\" \/&gt;\n       &lt;\/customErrors&gt;\n\n       &lt;!-- Deshabilitamos el seguimiento --&gt;\n       &lt;trace enabled=\"false\" \/&gt;\n  &lt;\/system.web&gt;\n\n  &lt;!-- Habilitamos la compresi\u00f3n y las cabeceras de cache en los manejadores AJAX de ASP.NET --&gt;\n  &lt;system.web.extensions&gt;\n    &lt;scripting&gt;\n      &lt;scriptResourceHandler enableCaching=\"true\" enableCompression=\"true\" \/&gt;\n    &lt;\/scripting&gt;\n  &lt;\/system.web.extensions&gt;\n\n  &lt;!-- Configuraci\u00f3n de IIS --&gt;\n  &lt;system.webServer&gt;\n\t&lt;!-- Habilitamos la compresi\u00f3n GZIP y especificamos las cabeceras de cache a un a\u00f1o --&gt;\n        &lt;urlCompression doStaticCompression=\"true\" doDynamicCompression=\"true\" dynamicCompressionBeforeCache=\"true\" \/&gt;\n\t&lt;httpCompression directory=\"%SystemDrive%\\inetpub\\temp\\IIS Temporary Compressed Files\" sendCacheHeaders=\"true\" cacheControlHeader=\"max-age=31536000\" dynamicCompressionDisableCpuUsage=\"90\" staticCompressionDisableCpuUsage=\"90\" dynamicCompressionEnableCpuUsage=\"0\" staticCompressionEnableCpuUsage=\"0\"&gt;\n\t  &lt;scheme name=\"gzip\" dll=\"%Windir%\\system32\\inetsrv\\gzip.dll\" doStaticCompression=\"true\" doDynamicCompression=\"true\" dynamicCompressionLevel=\"10\" staticCompressionLevel=\"10\" \/&gt;\n\t  &lt;staticTypes&gt;\n\t    &lt;add mimeType=\"text\/*\" enabled=\"true\" \/&gt;\n            &lt;add mimeType=\"message\/*\" enabled=\"true\" \/&gt;\n            &lt;add mimeType=\"application\/javascript\" enabled=\"true\" \/&gt;\n            &lt;add mimeType=\"application\/x-javascript\" enabled=\"true\" \/&gt;\n            &lt;add mimeType=\"application\/json\" enabled=\"true\" \/&gt;\n            &lt;add mimeType=\"*\/*\" enabled=\"false\" \/&gt;\n\t  &lt;\/staticTypes&gt;\n          &lt;dynamicTypes&gt;\n            &lt;add mimeType=\"text\/*\" enabled=\"true\" \/&gt;\n            &lt;add mimeType=\"message\/*\" enabled=\"true\" \/&gt;\n            &lt;add mimeType=\"application\/javascript\" enabled=\"true\" \/&gt;\n            &lt;add mimeType=\"application\/x-javascript\" enabled=\"true\" \/&gt;\n            &lt;add mimeType=\"application\/json\" enabled=\"true\" \/&gt;\n            &lt;add mimeType=\"*\/*\" enabled=\"false\" \/&gt;\n          &lt;\/dynamicTypes&gt;\n\t&lt;\/httpCompression&gt;\n\n        &lt;!-- Especificamos que se utilice el reemplazo de la respuesta cuando se produce un error en el servidor en vez de hacer una redirecci\u00f3n. De est\u00e1 forma logramos que los c\u00f3digos de estado devueltos sean correctos. --&gt;\n\t&lt;httpErrors existingResponse=\"Replace\" errorMode=\"Custom\"&gt;\n\t  &lt;remove statusCode=\"404\" subStatusCode=\"-1\" \/&gt;\n\t  &lt;error statusCode=\"404\" subStatusCode=\"-1\" path=\"\/error.aspx?error=404\" responseMode=\"ExecuteURL\" \/&gt;\n\t  &lt;remove statusCode=\"500\" subStatusCode=\"-1\" \/&gt;\n\t  &lt;error statusCode=\"500\" subStatusCode=\"-1\" path=\"\/error.aspx?error=500\" responseMode=\"ExecuteURL\" \/&gt;\n\t&lt;\/httpErrors&gt;\n\n        &lt;!-- Deshabilitamos el listado de directorios --&gt;\n\t&lt;directoryBrowse enabled=\"false\" \/&gt;\n\n        &lt;!-- Deshabilitamos la validaci\u00f3n de la configuraci\u00f3n en modo integrado --&gt;\n\t&lt;validation validateIntegratedModeConfiguration=\"false\" \/&gt;\n\n\t&lt;!-- Deshabilitamos que todos los m\u00f3dulos se ejecuten en todas las peticiones --&gt;\n\t&lt;modules runAllManagedModulesForAllRequests=\"false\" \/&gt;\n\n        &lt;!-- \n        Establecemos los tipos MIME de todos los archivos que servimos.\n        IIS no sirve los archivos que desconoce su tipo MIME por seguridad.\n        Establecemos la cache en un a\u00f1o del cliente.\n        --&gt;\n\t&lt;staticContent&gt;\n          &lt;clientCache cacheControlMode=\"UseMaxAge\" cacheControlMaxAge=\"365.00:00:00\" cacheControlCustom=\"public\" \/&gt;\n\t  &lt;remove fileExtension=\".css\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".css\" mimeType=\"text\/css\" \/&gt;\n\t  &lt;remove fileExtension=\".js\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".js\" mimeType=\"application\/javascript\" \/&gt;\n\t  &lt;remove fileExtension=\".json\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".json\" mimeType=\"application\/json\" \/&gt;\n\t  &lt;remove fileExtension=\".rss\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".rss\" mimeType=\"application\/rss+xml; charset=UTF-8\" \/&gt;\n\t  &lt;remove fileExtension=\".html\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".html\" mimeType=\"text\/html; charset=UTF-8\" \/&gt;\n\t  &lt;remove fileExtension=\".xml\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".xml\" mimeType=\"application\/xml; charset=UTF-8\" \/&gt;\n\t  &lt;remove fileExtension=\".mp3\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".mp3\" mimeType=\"audio\/mpeg\" \/&gt;\n\t  &lt;remove fileExtension=\".mp4\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".mp4\" mimeType=\"video\/mp4\" \/&gt;\n\t  &lt;remove fileExtension=\".ogg\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".ogg\" mimeType=\"audio\/ogg\" \/&gt;\n\t  &lt;remove fileExtension=\".ogv\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".ogv\" mimeType=\"video\/ogg\" \/&gt;\n\t  &lt;remove fileExtension=\".webm\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".webm\" mimeType=\"video\/webm\" \/&gt;\n\t  &lt;remove fileExtension=\".svg\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".svg\" mimeType=\"image\/svg+xml\" \/&gt;\n\t  &lt;remove fileExtension=\".svgz\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".svgz\" mimeType=\"image\/svg+xml\" \/&gt;\n\t  &lt;remove fileExtension=\".eot\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".eot\" mimeType=\"application\/vnd.ms-fontobject\" \/&gt;\n\t  &lt;remove fileExtension=\".ttf\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".ttf\" mimeType=\"application\/x-font-ttf\" \/&gt;\n\t  &lt;remove fileExtension=\".ttc\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".ttc\" mimeType=\"application\/x-font-ttf\" \/&gt;\n\t  &lt;remove fileExtension=\".otf\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".otf\" mimeType=\"font\/opentype\" \/&gt;\n\t  &lt;remove fileExtension=\".woff\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".woff\" mimeType=\"application\/font-woff\" \/&gt;\n\t  &lt;remove fileExtension=\".crx\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".crx\" mimeType=\"application\/x-chrome-extension\" \/&gt;\n\t  &lt;remove fileExtension=\".xpi\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".xpi\" mimeType=\"application\/x-xpinstall\" \/&gt;\n\t  &lt;remove fileExtension=\".safariextz\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".safariextz\" mimeType=\"application\/octet-stream\" \/&gt;\n\t  &lt;remove fileExtension=\".flv\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".flv\" mimeType=\"video\/x-flv\" \/&gt;\n\t  &lt;remove fileExtension=\".f4v\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".f4v\" mimeType=\"video\/mp4\" \/&gt;\n\t  &lt;remove fileExtension=\".ico\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".ico\" mimeType=\"image\/x-icon\" \/&gt;\n\t  &lt;remove fileExtension=\".webp\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".webp\" mimeType=\"image\/webp\" \/&gt;\n\t  &lt;remove fileExtension=\".htc\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".htc\" mimeType=\"text\/x-component\" \/&gt;\n\t  &lt;remove fileExtension=\".vcf\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".vcf\" mimeType=\"text\/x-vcard\" \/&gt;\n\t  &lt;remove fileExtension=\".torrent\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".torrent\" mimeType=\"application\/x-bittorrent\" \/&gt;\n\t  &lt;remove fileExtension=\".cur\" \/&gt;\n\t  &lt;mimeMap fileExtension=\".cur\" mimeType=\"image\/x-icon\" \/&gt;\n\t&lt;\/staticContent&gt;\n\t&lt;httpProtocol&gt;\n\t  &lt;customHeaders&gt;\n\t\t&lt;!-- Establecemos la cabecera que indica que nuestra p\u00e1gina solo puede aparecer en frames o iframes de nuestro propio dominio. --&gt;\n                &lt;add name=\"X-Frame-Options\" value=\"SAMEORIGIN\" \/&gt;\n\n\t\t&lt;!-- Habilitamos la protecci\u00f3n contra XSS en Internet Explorer. --&gt;\n                &lt;add name=\"X-XSS-Protection\" value=\"1; mode=block\"\/&gt;\n\n\t\t&lt;!-- Habilitamos la protecci\u00f3n contra cambios de tipo MIME en Internet Explorer --&gt;\n\t\t&lt;add name=\"X-Content-Type-Options\" value=\"nosniff\" \/&gt;\n\n\t\t&lt;!-- Eliminamos la cabecera X-Powered-By --&gt;\n\t\t&lt;remove name=\"X-Powered-By\" \/&gt;\n\n\t\t&lt;!-- \n                Eliminamos la cabecera ETAG. Si un recurso cambia lo mejor es que cambie de URL para que se vuelva a descargar as\u00ed nos ahorramos que el cliente haga una petici\u00f3n de consulta por cada archivo con la cabecera ETAG\n                --&gt;\n                &lt;add name=\"ETAG\" value=\"\" \/&gt;\n\n\t\t&lt;!--\n                Forzamos a que Internet Explorer use la \u00faltima versi\u00f3n de su motor de renderizado.\n                --&gt;\n\t\t&lt;add name=\"X-UA-Compatible\" value=\"IE=Edge\" \/&gt;\n\t  &lt;\/customHeaders&gt;\n\t&lt;\/httpProtocol&gt;\n\n        &lt;!-- Establecemos default.aspx como el archivo por defecto de un directorio --&gt;\n        &lt;defaultDocument enabled=\"true\"&gt;\n          &lt;files&gt;\n            &lt;clear \/&gt;\n            &lt;add value=\"default.aspx\" \/&gt;\n          &lt;\/files&gt;\n        &lt;\/defaultDocument&gt;\n\t&lt;!-- \n        Reglas de reescritura de URLs \n        Es necesario tener instalado el m\u00f3dulo \"URL Rewrite Module 2.0\"\n        --&gt;\n        &lt;rewrite&gt;\n            &lt;rules&gt;\n                &lt;!-- Forzamos que el dominio salga siempre con www, excepto cuando ejecutamos el proyecto en local o empieza por www --&gt;\n                &lt;rule name=\"WWW\" stopProcessing=\"true\"&gt;\n                    &lt;match url=\"(.*)\" \/&gt;\n                    &lt;conditions&gt;\n                        &lt;add input=\"{HTTP_HOST}\" pattern=\"(.*)\" \/&gt;\n                        &lt;add input=\"{HTTP_HOST}\" pattern=\"^www\\.\" negate=\"true\" \/&gt;\n                        &lt;add input=\"{HTTP_HOST}\" pattern=\"^localhost\" negate=\"true\" \/&gt;\n                    &lt;\/conditions&gt;\n                    &lt;action type=\"Redirect\" url=\"http:\/\/www.{C:1}\/{R:1}\" redirectType=\"Permanent\" \/&gt;\n                &lt;\/rule&gt;\n\n                &lt;!--  Eliminamos default.aspx de la URL --&gt;\n                &lt;rule name=\"Default Document\" stopProcessing=\"true\"&gt;\n                  &lt;match url=\"^(.*)default\\.aspx$\" \/&gt;\n                  &lt;action type=\"Redirect\" url=\"{R:1}\" redirectType=\"Permanent\" \/&gt;\n                &lt;\/rule&gt;\n\n                &lt;!-- Convierte toda la url a min\u00fascula, excepto cuando sea un archivo, un directorio, un manejador AJAX de ASP.NET o un bundle --&gt;\n                &lt;rule name=\"Lower Case URLs\" stopProcessing=\"true\"&gt;\n                  &lt;match url=\"[A-Z]\" ignoreCase=\"false\" \/&gt;\n                    &lt;conditions logicalGrouping=\"MatchAll\" trackAllCaptures=\"false\"&gt;\n                      &lt;add input=\"{REQUEST_FILENAME}\" matchType=\"IsFile\" negate=\"true\" \/&gt;\n                      &lt;add input=\"{REQUEST_FILENAME}\" matchType=\"IsDirectory\" negate=\"true\" \/&gt;\n                      &lt;add input=\"{URL}\" pattern=\"^(.+)\\.axd$\" negate=\"true\" \/&gt;\n                      &lt;add input=\"{URL}\" pattern=\"^bundles\/\" negate=\"true\" \/&gt;\n                    &lt;\/conditions&gt;\n                    &lt;action type=\"Redirect\" url=\"{ToLower:{URL}}\" redirectType=\"Permanent\" \/&gt;\n                  &lt;\/rule&gt;\n\n                &lt;!-- \n                Especificamos regla de reescritura para los bundles de ASP.NET \n                \/bundles\/css\/asd12SDasdada -&gt; \/bundles\/css?v=asd12SDasdada\n                --&gt;\n                &lt;rule name=\"Bundles\"&gt;\n                  &lt;match url=\"^bundles\/([^\/]+)\/(.+)$\" \/&gt;\n                  &lt;action type=\"Rewrite\" url=\"\/bundles\/{R:1}?v={R:2}\" \/&gt;\n                &lt;\/rule&gt;\n\n            &lt;\/rules&gt;\n        &lt;\/rewrite&gt;\n\n  &lt;\/system.webServer&gt;\n&lt;\/configuration&gt;<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>By performing a measurement before and after making changes to the default values of the web.config file, you will find a great improvement in the loading speed of your web page, something that your visitors will appreciate.<\/p>\n<p>I leave you a <a title=\"Optimal configuration of web.config\" href=\"http:\/\/pastebin.com\/0yDC8JhL\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">link to the configuration file<\/a> so that you can download it easily.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Optimally configuring the web server on which you host your website is one of the key factors in the&#8230;<\/p>\n","protected":false},"author":16,"featured_media":44100,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[349],"tags":[534,379],"class_list":["post-52390","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-seo","tag-technical-seo","tag-wpo"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to configure IIS to improve the performance and SEO of your website<\/title>\n<meta name=\"description\" content=\"In this article we explain how to correctly configure Internet Information Server (IIS) to obtain a better performance in our web page.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.humanlevel.com\/en\/blog\/seo\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to configure IIS to improve the performance and SEO of your website\" \/>\n<meta property=\"og:description\" content=\"In this article we explain how to correctly configure Internet Information Server (IIS) to obtain a better performance in our web page.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.humanlevel.com\/en\/blog\/seo\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website\" \/>\n<meta property=\"og:site_name\" content=\"Human Level\" \/>\n<meta property=\"article:published_time\" content=\"2014-01-13T07:00:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2014-01-13T07:25:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.humanlevel.com\/wp-content\/uploads\/optimizacion-iis.png\" \/>\n\t<meta property=\"og:image:width\" content=\"256\" \/>\n\t<meta property=\"og:image:height\" content=\"256\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Juan Pedro Catal\u00e1\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Juan Pedro Catal\u00e1\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\\\/\\\/www.humanlevel.com\\\/en\\\/blog\\\/seo\\\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.humanlevel.com\\\/en\\\/blog\\\/seo\\\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website\"},\"author\":{\"name\":\"Juan Pedro Catal\u00e1\",\"@id\":\"https:\\\/\\\/www.humanlevel.com\\\/en#\\\/schema\\\/person\\\/a3017b3be2f453478ccde37eea4a316e\"},\"headline\":\"How to configure Internet Information Server (IIS) to improve the performance and SEO of your website\",\"datePublished\":\"2014-01-13T07:00:08+00:00\",\"dateModified\":\"2014-01-13T07:25:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.humanlevel.com\\\/en\\\/blog\\\/seo\\\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website\"},\"wordCount\":212,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.humanlevel.com\\\/en#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.humanlevel.com\\\/en\\\/blog\\\/seo\\\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.humanlevel.com\\\/wp-content\\\/uploads\\\/optimizacion-iis.png\",\"keywords\":[\"Technical SEO\",\"WPO\"],\"articleSection\":[\"SEO\\\/GEO\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.humanlevel.com\\\/en\\\/blog\\\/seo\\\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.humanlevel.com\\\/en\\\/blog\\\/seo\\\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website\",\"url\":\"https:\\\/\\\/www.humanlevel.com\\\/en\\\/blog\\\/seo\\\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website\",\"name\":\"How to configure IIS to improve the performance and SEO of your website\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.humanlevel.com\\\/en#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.humanlevel.com\\\/en\\\/blog\\\/seo\\\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.humanlevel.com\\\/en\\\/blog\\\/seo\\\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.humanlevel.com\\\/wp-content\\\/uploads\\\/optimizacion-iis.png\",\"datePublished\":\"2014-01-13T07:00:08+00:00\",\"dateModified\":\"2014-01-13T07:25:00+00:00\",\"description\":\"In this article we explain how to correctly configure Internet Information Server (IIS) to obtain a better performance in our web page.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.humanlevel.com\\\/en\\\/blog\\\/seo\\\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.humanlevel.com\\\/en\\\/blog\\\/seo\\\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.humanlevel.com\\\/en\\\/blog\\\/seo\\\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website#primaryimage\",\"url\":\"https:\\\/\\\/www.humanlevel.com\\\/wp-content\\\/uploads\\\/optimizacion-iis.png\",\"contentUrl\":\"https:\\\/\\\/www.humanlevel.com\\\/wp-content\\\/uploads\\\/optimizacion-iis.png\",\"width\":256,\"height\":256},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.humanlevel.com\\\/en\\\/blog\\\/seo\\\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Inicio\",\"item\":\"https:\\\/\\\/www.humanlevel.com\\\/en\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https:\\\/\\\/www.humanlevel.com\\\/en\\\/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"SEO\\\/GEO\",\"item\":\"https:\\\/\\\/www.humanlevel.com\\\/en\\\/blog\\\/seo\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"How to configure Internet Information Server (IIS) to improve the performance and SEO of your website\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.humanlevel.com\\\/en#website\",\"url\":\"https:\\\/\\\/www.humanlevel.com\\\/en\",\"name\":\"Human Level\",\"description\":\"Web positioning and online marketing consultant Human Level\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.humanlevel.com\\\/en#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.humanlevel.com\\\/en?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.humanlevel.com\\\/en#organization\",\"name\":\"Human Level\",\"url\":\"https:\\\/\\\/www.humanlevel.com\\\/en\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.humanlevel.com\\\/en#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.humanlevel.com\\\/wp-content\\\/uploads\\\/logohl25x3.png\",\"contentUrl\":\"https:\\\/\\\/www.humanlevel.com\\\/wp-content\\\/uploads\\\/logohl25x3.png\",\"width\":600,\"height\":93,\"caption\":\"Human Level\"},\"image\":{\"@id\":\"https:\\\/\\\/www.humanlevel.com\\\/en#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/company\\\/human-level-communications\",\"https:\\\/\\\/www.youtube.com\\\/user\\\/humanlevelcommunica\",\"https:\\\/\\\/bsky.app\\\/profile\\\/humanlevel.bsky.social\",\"https:\\\/\\\/instagram.com\\\/humanlevel\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.humanlevel.com\\\/en#\\\/schema\\\/person\\\/a3017b3be2f453478ccde37eea4a316e\",\"name\":\"Juan Pedro Catal\u00e1\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/00d73b28fe00978008dd0f2a66ebaac422441ad1b85c53e8c422a01b2bd47dee?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/00d73b28fe00978008dd0f2a66ebaac422441ad1b85c53e8c422a01b2bd47dee?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/00d73b28fe00978008dd0f2a66ebaac422441ad1b85c53e8c422a01b2bd47dee?s=96&d=mm&r=g\",\"caption\":\"Juan Pedro Catal\u00e1\"},\"description\":\"Former senior web developer at Human Level. Graduated in Technical Engineering in Computer Management. Subsequently, he completed a Master's Degree in Web Services and Applications Development. Specialist in web development, e-commerce and booking engines.\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/juanpecatala\\\/\"],\"url\":\"https:\\\/\\\/www.humanlevel.com\\\/en\\\/author\\\/juan\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to configure IIS to improve the performance and SEO of your website","description":"In this article we explain how to correctly configure Internet Information Server (IIS) to obtain a better performance in our web page.","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:\/\/www.humanlevel.com\/en\/blog\/seo\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website","og_locale":"en_US","og_type":"article","og_title":"How to configure IIS to improve the performance and SEO of your website","og_description":"In this article we explain how to correctly configure Internet Information Server (IIS) to obtain a better performance in our web page.","og_url":"https:\/\/www.humanlevel.com\/en\/blog\/seo\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website","og_site_name":"Human Level","article_published_time":"2014-01-13T07:00:08+00:00","article_modified_time":"2014-01-13T07:25:00+00:00","og_image":[{"width":256,"height":256,"url":"https:\/\/www.humanlevel.com\/wp-content\/uploads\/optimizacion-iis.png","type":"image\/png"}],"author":"Juan Pedro Catal\u00e1","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Juan Pedro Catal\u00e1","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.humanlevel.com\/en\/blog\/seo\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website#article","isPartOf":{"@id":"https:\/\/www.humanlevel.com\/en\/blog\/seo\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website"},"author":{"name":"Juan Pedro Catal\u00e1","@id":"https:\/\/www.humanlevel.com\/en#\/schema\/person\/a3017b3be2f453478ccde37eea4a316e"},"headline":"How to configure Internet Information Server (IIS) to improve the performance and SEO of your website","datePublished":"2014-01-13T07:00:08+00:00","dateModified":"2014-01-13T07:25:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.humanlevel.com\/en\/blog\/seo\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website"},"wordCount":212,"commentCount":0,"publisher":{"@id":"https:\/\/www.humanlevel.com\/en#organization"},"image":{"@id":"https:\/\/www.humanlevel.com\/en\/blog\/seo\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website#primaryimage"},"thumbnailUrl":"https:\/\/www.humanlevel.com\/wp-content\/uploads\/optimizacion-iis.png","keywords":["Technical SEO","WPO"],"articleSection":["SEO\/GEO"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.humanlevel.com\/en\/blog\/seo\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.humanlevel.com\/en\/blog\/seo\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website","url":"https:\/\/www.humanlevel.com\/en\/blog\/seo\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website","name":"How to configure IIS to improve the performance and SEO of your website","isPartOf":{"@id":"https:\/\/www.humanlevel.com\/en#website"},"primaryImageOfPage":{"@id":"https:\/\/www.humanlevel.com\/en\/blog\/seo\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website#primaryimage"},"image":{"@id":"https:\/\/www.humanlevel.com\/en\/blog\/seo\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website#primaryimage"},"thumbnailUrl":"https:\/\/www.humanlevel.com\/wp-content\/uploads\/optimizacion-iis.png","datePublished":"2014-01-13T07:00:08+00:00","dateModified":"2014-01-13T07:25:00+00:00","description":"In this article we explain how to correctly configure Internet Information Server (IIS) to obtain a better performance in our web page.","breadcrumb":{"@id":"https:\/\/www.humanlevel.com\/en\/blog\/seo\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.humanlevel.com\/en\/blog\/seo\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.humanlevel.com\/en\/blog\/seo\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website#primaryimage","url":"https:\/\/www.humanlevel.com\/wp-content\/uploads\/optimizacion-iis.png","contentUrl":"https:\/\/www.humanlevel.com\/wp-content\/uploads\/optimizacion-iis.png","width":256,"height":256},{"@type":"BreadcrumbList","@id":"https:\/\/www.humanlevel.com\/en\/blog\/seo\/how-to-configure-internet-information-server-iis-to-improve-the-performance-and-seo-of-your-website#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Inicio","item":"https:\/\/www.humanlevel.com\/en"},{"@type":"ListItem","position":2,"name":"Blog","item":"https:\/\/www.humanlevel.com\/en\/blog"},{"@type":"ListItem","position":3,"name":"SEO\/GEO","item":"https:\/\/www.humanlevel.com\/en\/blog\/seo"},{"@type":"ListItem","position":4,"name":"How to configure Internet Information Server (IIS) to improve the performance and SEO of your website"}]},{"@type":"WebSite","@id":"https:\/\/www.humanlevel.com\/en#website","url":"https:\/\/www.humanlevel.com\/en","name":"Human Level","description":"Web positioning and online marketing consultant Human Level","publisher":{"@id":"https:\/\/www.humanlevel.com\/en#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.humanlevel.com\/en?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.humanlevel.com\/en#organization","name":"Human Level","url":"https:\/\/www.humanlevel.com\/en","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.humanlevel.com\/en#\/schema\/logo\/image\/","url":"https:\/\/www.humanlevel.com\/wp-content\/uploads\/logohl25x3.png","contentUrl":"https:\/\/www.humanlevel.com\/wp-content\/uploads\/logohl25x3.png","width":600,"height":93,"caption":"Human Level"},"image":{"@id":"https:\/\/www.humanlevel.com\/en#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/human-level-communications","https:\/\/www.youtube.com\/user\/humanlevelcommunica","https:\/\/bsky.app\/profile\/humanlevel.bsky.social","https:\/\/instagram.com\/humanlevel"]},{"@type":"Person","@id":"https:\/\/www.humanlevel.com\/en#\/schema\/person\/a3017b3be2f453478ccde37eea4a316e","name":"Juan Pedro Catal\u00e1","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/00d73b28fe00978008dd0f2a66ebaac422441ad1b85c53e8c422a01b2bd47dee?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/00d73b28fe00978008dd0f2a66ebaac422441ad1b85c53e8c422a01b2bd47dee?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/00d73b28fe00978008dd0f2a66ebaac422441ad1b85c53e8c422a01b2bd47dee?s=96&d=mm&r=g","caption":"Juan Pedro Catal\u00e1"},"description":"Former senior web developer at Human Level. Graduated in Technical Engineering in Computer Management. Subsequently, he completed a Master's Degree in Web Services and Applications Development. Specialist in web development, e-commerce and booking engines.","sameAs":["https:\/\/www.linkedin.com\/in\/juanpecatala\/"],"url":"https:\/\/www.humanlevel.com\/en\/author\/juan"}]}},"_links":{"self":[{"href":"https:\/\/www.humanlevel.com\/en\/wp-json\/wp\/v2\/posts\/52390","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.humanlevel.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.humanlevel.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.humanlevel.com\/en\/wp-json\/wp\/v2\/users\/16"}],"replies":[{"embeddable":true,"href":"https:\/\/www.humanlevel.com\/en\/wp-json\/wp\/v2\/comments?post=52390"}],"version-history":[{"count":3,"href":"https:\/\/www.humanlevel.com\/en\/wp-json\/wp\/v2\/posts\/52390\/revisions"}],"predecessor-version":[{"id":89786,"href":"https:\/\/www.humanlevel.com\/en\/wp-json\/wp\/v2\/posts\/52390\/revisions\/89786"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.humanlevel.com\/en\/wp-json\/wp\/v2\/media\/44100"}],"wp:attachment":[{"href":"https:\/\/www.humanlevel.com\/en\/wp-json\/wp\/v2\/media?parent=52390"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.humanlevel.com\/en\/wp-json\/wp\/v2\/categories?post=52390"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.humanlevel.com\/en\/wp-json\/wp\/v2\/tags?post=52390"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}