{"id":10910,"date":"2024-05-07T16:52:41","date_gmt":"2024-05-07T16:52:41","guid":{"rendered":"https:\/\/wcanvas.com\/?post_type=resources&#038;p=10910"},"modified":"2024-12-09T17:10:47","modified_gmt":"2024-12-09T17:10:47","slug":"como-simular-pagespeed-insights-con-lighthouse","status":"publish","type":"resources","link":"https:\/\/wcanvas.com\/es\/resource\/como-simular-pagespeed-insights-con-lighthouse\/","title":{"rendered":"C\u00f3mo simular PageSpeed Insights con Lighthouse"},"content":{"rendered":"\n<p>\u00bfAlguna vez no pudiste usar <a href=\"https:\/\/pagespeed.web.dev\/\" target=\"_blank\" rel=\"noreferrer noopener\">PageSpeed<\/a> Insights para probar tus sitios cuando trabaj\u00e1s con desarrollos locales o protecciones de autenticaci\u00f3n b\u00e1sica, como las de sitios transferibles de <a href=\"https:\/\/wpengine.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">WPEngine<\/a> y otros entornos protegidos? Esta limitaci\u00f3n requiere una soluci\u00f3n que te permita aproximar los resultados de PageSpeed Insights con una herramienta que pueda acceder a entornos protegidos.<\/p>\n\n\n\n<p>No poder probar el rendimiento, SEO, accesibilidad y mejores pr\u00e1cticas obstaculiza tu capacidad para optimizar y monitorear eficazmente tu sitio durante el desarrollo.<\/p>\n\n\n\n<p>Para abordar esto, desarrollamos una soluci\u00f3n utilizando la herramienta de c\u00f3digo abierto de Google, <a href=\"https:\/\/github.com\/GoogleChrome\/lighthouse\" target=\"_blank\" rel=\"noreferrer noopener\">Lighthouse<\/a>, para realizar auditor\u00edas de rendimiento local detalladas bajo condiciones similares a las de PageSpeed Insights.<\/p>\n\n\n\n<p>Con la ayuda de Node.js y Express, utilizaremos Lighthouse para aproximar las auditor\u00edas proporcionadas por PageSpeed Insights y ayudarte a optimizar el rendimiento de tu sitio en cada etapa del desarrollo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfPor qu\u00e9 necesitamos soluciones de prueba de rendimiento local?<\/h2>\n\n\n\n<p>Usar Lighthouse localmente permite a los desarrolladores personalizar el entorno de prueba seg\u00fan sus necesidades espec\u00edficas, lo cual incluye manejar URLs protegidos por caracter\u00edsticas de autenticaci\u00f3n b\u00e1sica. Dado que PageSpeed Insights no puede auditar sitios protegidos, los desarrolladores que quieran optimizar el rendimiento antes del lanzamiento necesitan idear una soluci\u00f3n local que ofrezca beneficios similares.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">C\u00f3mo configurar un entorno de pruebas local con Node.js y Express<\/h2>\n\n\n\n<p>Nuestra soluci\u00f3n implica configurar un servidor Node.js usando Express para gestionar las solicitudes de pruebas de rendimiento.<\/p>\n\n\n\n<p>Esta configuraci\u00f3n te permite aproximar los resultados que obtendr\u00edas de PageSpeed Insights y ofrece la flexibilidad para manejar escenarios que la herramienta en l\u00ednea o el navegador de lighthouse no soportan directamente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 1: Instalar Node.js y paquetes requeridos<\/h3>\n\n\n\n<p>Asegurate de tener Node.js instalado en tu sistema. Luego, cre\u00e1 un nuevo directorio para tu proyecto e instal\u00e1 los paquetes necesarios:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash line-numbers\">mkdir lighthouse-server\ncd lighthouse-server\nnpm init -y\nnpm install express lighthouse chrome-launcher<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Paso 2: Configurar el servidor Express<\/strong><\/h3>\n\n\n\n<p>Crea un archivo llamado <code>server.js<\/code> y configur\u00e1 tu servidor Express con el siguiente c\u00f3digo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript line-numbers\">const express = require('express');\nconst fs = require('fs');\nconst { v4: uuidv4 } = require('uuid');\nconst path = require('path');\n\nconst PORT = 3000;\nlet lighthouse;\nlet chromeLauncher;\n\n(async () =&gt; {\n    lighthouse = (await import('lighthouse')).default;\n    chromeLauncher = await import('chrome-launcher');\n})();\n\nconst app = express();\napp.use(express.json());\n\nconst resultsDirectory = path.join(__dirname, 'results');\nif (!fs.existsSync(resultsDirectory)){\n    fs.mkdirSync(resultsDirectory, { recursive: true });\n}\n\nconst getSafeFilename = (url) =&gt; {\n    return encodeURIComponent(url).replace(\/[%]\/g, '');\n}\n\nconst loadHistory = (url) =&gt; {\n    const filePath = path.join(resultsDirectory, `${getSafeFilename(url)}.json`);\n    if (fs.existsSync(filePath)) {\n        return JSON.parse(fs.readFileSync(filePath, 'utf8'));\n    }\n    return [];\n};\n\nconst saveHistory = (url, data) =&gt; {\n    const filePath = path.join(resultsDirectory, `${getSafeFilename(url)}.json`);\n    fs.writeFileSync(filePath, JSON.stringify(data, null, 2));\n};\n\nconst runLighthouse = async (url, config, outputFilename) =&gt; {\n    const chrome = await chromeLauncher.launch({chromeFlags: ['--headless']});\n    const options = {\n        logLevel: 'info',\n        output: 'html',\n        onlyCategories: ['performance', 'accessibility', 'best-practices', 'seo'],\n        port: chrome.port,\n        ...config,\n    };\n\n    try {\n        const runnerResult = await lighthouse(url, options);\n        fs.writeFileSync(outputFilename, runnerResult.report);\n        return {\n            scores: {\n                performance: runnerResult.lhr.categories.performance.score * 100,\n                accessibility: runnerResult.lhr.categories.accessibility.score * 100,\n                bestPractices: runnerResult.lhr.categories['best-practices'].score * 100,\n                seo: runnerResult.lhr.categories.seo.score * 100\n            },\n            reportPath: outputFilename\n        };\n    } finally {\n        await chrome.kill();\n    }\n};\n\napp.post('\/pagespeed-test', async (req, res) =&gt; {\n    const { url } = req.body;\n    if (!url) {\n        return res.status(400).json({ error: 'URL is required' });\n    }\n\n    const id = uuidv4();\n    const mobileConfig = {\n        throttling: {\n            rttMs: 150, \/\/ tiempo ida y vuelta en milisegundos\n            throughputKbps: 1638.4, \/\/ rendimiento en kilobits por segundo\n            cpuSlowdownMultiplier: 4 \/\/ cuanto m\u00e1s lento se supone que es el CPU\n        },\n        emulatedFormFactor: 'mobile',\n        channel: 'cli'\n    };\n    \n    const desktopConfig = {\n        throttling: {\n            rttMs: 40, \/\/ tiempo ida y vuelta en milisegundos\n            throughputKbps: 5000, \/\/ rendimiento en kilobits por segundo\n            cpuSlowdownMultiplier: 1 \/\/ sin ralentizaci\u00f3n\n        },\n        emulatedFormFactor: 'desktop',\n        channel: 'cli'\n    };\n\n    try {\n        const mobileResults = await runLighthouse(url, mobileConfig, `reports\/${id}_mobile.html`);\n        const desktopResults = await runLighthouse(url, desktopConfig, `reports\/${id}_desktop.html`);\n\n        const result = {\n            url,\n            timestamp: new Date().toISOString(),\n            mobile: {\n                scores: mobileResults.scores,\n                reportUrl: `http:\/\/localhost:${PORT}\/reports\/${id}_mobile.html`\n            },\n            desktop: {\n                scores: desktopResults.scores,\n                reportUrl: `http:\/\/localhost:${PORT}\/reports\/${id}_desktop.html`\n            }\n        };\n\n        \/\/ Cargar historial existente sin agregar el resultado actual\n        const history = loadHistory(url);\n\n        \/\/ Agregar el resultado actual de la prueba al historial para futuras solicitudes\n        const updatedHistory = [...history, result];\n        saveHistory(url, updatedHistory);\n\n        \/\/ Devolver el resultado actual y el historial (excluyendo la prueba actual)\n        res.json({\n            currentResult: result,\n            history: history\n        });\n    } catch (error) {\n        res.status(500).json({ error: 'Error al ejecutar las pruebas de Lighthouse' });\n    }\n});\n\napp.use('\/reports', express.static('reports'));\napp.listen(PORT, () =&gt; {\n    console.log(`Servidor corriendo en :${PORT}`);\n});<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Configuraciones<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\">Configuraciones para M\u00f3viles<\/h5>\n\n\n\n<p><strong>Aceleraci\u00f3n<\/strong>. Las pruebas m\u00f3viles est\u00e1n configuradas con una aceleraci\u00f3n significativa en la red y la CPU. La aceleraci\u00f3n deliberada simula las condiciones de un dispositivo m\u00f3vil accediendo al sitio a trav\u00e9s de una t\u00edpica red 3G o 4G, que es m\u00e1s lenta que la mayor\u00eda de las conexiones por cable o Wi-Fi.<\/p>\n\n\n\n<p>La aceleraci\u00f3n incluye:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RTT (Round Trip Time). Latencia aumentada para imitar las condiciones de la red.<\/li>\n\n\n\n<li>Rendimiento. Ancho de banda limitado para reflejar las redes m\u00f3viles m\u00e1s lentas.<\/li>\n\n\n\n<li>Ralentizaci\u00f3n CPU. Simula la menor potencia de procesamiento de los dispositivos m\u00f3viles comparado con las computadoras de escritorio.<\/li>\n<\/ul>\n\n\n\n<p><strong>Factor de Forma Emulado<\/strong>. La prueba se realiza en un entorno m\u00f3vil emulado. Esto significa que el sitio se prueba como aparecer\u00eda en un dispositivo m\u00f3vil, considerando factores como el tama\u00f1o de pantalla, interfaces t\u00e1ctiles y navegadores m\u00f3viles.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Configuraciones para Escritorio<\/h5>\n\n\n\n<p><strong>Aceleraci\u00f3n<\/strong>. Las configuraciones de aceleraci\u00f3n para escritorio son menos severas que para m\u00f3vil, ya que los dispositivos de escritorio generalmente tienen conexiones de red m\u00e1s r\u00e1pidas y confiables y CPUs m\u00e1s potentes. La aceleraci\u00f3n para escritorio podr\u00eda incluir:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RTT M\u00ednima. Representa la latencia m\u00e1s baja t\u00edpicamente experimentada en escritorios.<\/li>\n\n\n\n<li>Mayor Rendimiento. Refleja las conexiones de Internet m\u00e1s r\u00e1pidas disponibles para los dispositivos de escritorio.<\/li>\n<\/ul>\n\n\n\n<p><strong>Factor de Forma Emulado<\/strong>. Sin emulaci\u00f3n m\u00f3vil. Probamos el sitio tal como aparecer\u00eda en un navegador de escritorio, utilizando todo el espacio de la pantalla y asumiendo m\u00e9todos de entrada como mouse y teclado.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u00bfPor qu\u00e9 estamos usando estas configuraciones?<\/h4>\n\n\n\n<p>La raz\u00f3n detr\u00e1s de estas configuraciones espec\u00edficas es reflejar lo m\u00e1s fielmente posible la experiencia del usuario promedio en cada tipo de dispositivo. Al emular ambientes m\u00f3viles m\u00e1s lentos y restringidos, pod\u00e9s entender c\u00f3mo se desempe\u00f1ar\u00e1 el sitio bajo las condiciones m\u00f3viles m\u00e1s comunes.<\/p>\n\n\n\n<p>Por otro lado, probar con configuraciones de escritorio permite la evaluaci\u00f3n en condiciones \u00f3ptimas con CPUs m\u00e1s r\u00e1pidas y velocidades de red m\u00e1s altas.<\/p>\n\n\n\n<p>Este enfoque ayuda a identificar posibles cuellos de botella y problemas de rendimiento que podr\u00edan no ser evidentes en un entorno pero son cr\u00edticos en otro. Por ejemplo, im\u00e1genes y scripts pesados que se cargan sin problema en una conexi\u00f3n r\u00e1pida de escritorio podr\u00edan causar demoras significativas en una red m\u00f3vil.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 3: Ejecutar y probar tu servidor<\/h3>\n\n\n\n<p>Ejecut\u00e1 tu servidor usando:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">node server.js<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"451\" src=\"https:\/\/wcanvas.com\/wp-content\/uploads\/2024\/05\/approximate-PageSpeed-insights-1-1024x451.jpg\" alt=\"Una interfaz de terminal con c\u00f3digo para ejecutar un servidor Node.js\" class=\"wp-image-4226\" srcset=\"https:\/\/wcanvas.com\/wp-content\/uploads\/2024\/05\/approximate-PageSpeed-insights-1-1024x451.jpg 1024w, https:\/\/wcanvas.com\/wp-content\/uploads\/2024\/05\/approximate-PageSpeed-insights-1-300x132.jpg 300w, https:\/\/wcanvas.com\/wp-content\/uploads\/2024\/05\/approximate-PageSpeed-insights-1-768x338.jpg 768w, https:\/\/wcanvas.com\/wp-content\/uploads\/2024\/05\/approximate-PageSpeed-insights-1.jpg 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Prob\u00e1 la funcionalidad enviando una solicitud POST a <code>http:\/\/localhost:3000\/pagespeed-test<\/code> con un cuerpo JSON que contenga una URL con autenticaci\u00f3n b\u00e1sica embebida.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"451\" src=\"https:\/\/wcanvas.com\/wp-content\/uploads\/2024\/05\/approximate-PageSpeed-insights-2-1024x451.jpg\" alt=\"Usando Visual Studio Code para enviar una solicitud POST con autenticaci\u00f3n b\u00e1sica\" class=\"wp-image-4227\" srcset=\"https:\/\/wcanvas.com\/wp-content\/uploads\/2024\/05\/approximate-PageSpeed-insights-2-1024x451.jpg 1024w, https:\/\/wcanvas.com\/wp-content\/uploads\/2024\/05\/approximate-PageSpeed-insights-2-300x132.jpg 300w, https:\/\/wcanvas.com\/wp-content\/uploads\/2024\/05\/approximate-PageSpeed-insights-2-768x338.jpg 768w, https:\/\/wcanvas.com\/wp-content\/uploads\/2024\/05\/approximate-PageSpeed-insights-2.jpg 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Si tu sitio tiene autenticaci\u00f3n b\u00e1sica, agreg\u00e1 las credenciales de esta forma <code>https:\/\/usuario:contrase\u00f1a@ejemplo.com<\/code>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Descripci\u00f3n revisada de la respuesta<\/h4>\n\n\n\n<p>Despu\u00e9s de realizar una prueba de Lighthouse mediante nuestra configuraci\u00f3n del servidor, la respuesta contiene resultados detallados de rendimiento para configuraciones m\u00f3viles y de escritorio junto con enlaces a los informes HTML completos. Esto es lo que incluye la respuesta:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>currentResult<\/strong>. Esta secci\u00f3n contiene los resultados de la prueba m\u00e1s reciente, con un desglose para ambos, m\u00f3vil y escritorio:\n<ul class=\"wp-block-list\">\n<li><strong>Scores M\u00f3viles y de Escritorio<\/strong>: Para cada uno, la respuesta incluye puntuaciones de rendimiento, accesibilidad, mejores pr\u00e1cticas y SEO, cada una escalada a un porcentaje.<\/li>\n\n\n\n<li><strong>ReportUrl<\/strong>: Enlaces directos a los informes HTML para las pruebas m\u00f3viles y de escritorio.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>history<\/strong>. Esta parte de la respuesta incluye una lista de resultados de pruebas anteriores para la misma URL, siguiendo la misma estructura que <strong>currentResult<\/strong> pero excluyendo la prueba m\u00e1s reciente para proporcionar una vista cronol\u00f3gica de los desempe\u00f1os pasados.<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">Ejemplo de la respuesta<\/h4>\n\n\n\n<p>Dada la estructura descrita, aqu\u00ed ten\u00e9s un ejemplo t\u00edpico de una respuesta JSON que podr\u00edas recibir despu\u00e9s de ejecutar una prueba:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"json\" class=\"language-json line-numbers\">{\n  \"currentResult\": {\n    \"url\": \"&lt;https:\/\/ejemplo.com&gt;\",\n    \"timestamp\": \"2024-04-24T15:46:01.239Z\",\n    \"mobile\": {\n      \"scores\": {\n        \"performance\": 99,\n        \"accessibility\": 88,\n        \"bestPractices\": 100,\n        \"seo\": 90\n      },\n      \"reportUrl\": \"&lt;http:\/\/localhost:3000\/reports\/ac531402-b89e-4bb8-9e07-db3496c3847b_mobile.html&gt;\"\n    },\n    \"desktop\": {\n      \"scores\": {\n        \"performance\": 100,\n        \"accessibility\": 88,\n        \"bestPractices\": 100,\n        \"seo\": 90\n      },\n      \"reportUrl\": \"&lt;http:\/\/localhost:3000\/reports\/ac531402-b89e-4bb8-9e07-db3496c3847b_desktop.html&gt;\"\n    }\n  },\n  \"history\": [\n    {\n      \"url\": \"&lt;https:\/\/ejemplo.com&gt;\",\n      \"timestamp\": \"2024-04-24T14:53:54.034Z\",\n      \"mobile\": {\n        \"scores\": {\n          \"performance\": 100,\n          \"accessibility\": 88,\n          \"bestPractices\": 100,\n          \"seo\": 90\n        },\n        \"reportUrl\": \"&lt;http:\/\/localhost:3000\/reports\/55d65b3b-024f-4acd-92f0-e1928ddd3b95_mobile.html&gt;\"\n      },\n      \"desktop\": {\n        \"scores\": {\n          \"performance\": 100,\n          \"accessibility\": 88,\n          \"bestPractices\": 100,\n          \"seo\": 90\n        },\n        \"reportUrl\": \"&lt;http:\/\/localhost:3000\/reports\/55d65b3b-024f-4acd-92f0-e1928ddd3b95_desktop.html&gt;\"\n      }\n    },\n    {\n      \"url\": \"&lt;https:\/\/ejemplo.com&gt;\",\n      \"timestamp\": \"2024-04-24T14:55:07.385Z\",\n      \"mobile\": {\n        \"scores\": {\n          \"performance\": 100,\n          \"accessibility\": 88,\n          \"bestPractices\": 100,\n          \"seo\": 90\n        },\n        \"reportUrl\": \"&lt;http:\/\/localhost:3000\/reports\/d1b46f09-3f85-4e7f-98ee-2b2ec0b97afb_mobile.html&gt;\"\n      },\n      \"desktop\": {\n        \"scores\": {\n          \"performance\": 100,\n          \"accessibility\": 88,\n          \"bestPractices\": 100,\n          \"seo\": 90\n        },\n        \"reportUrl\": \"&lt;http:\/\/localhost:3000\/reports\/d1b46f09-3f85-4e7f-98ee-2b2ec0b97afb_desktop.html&gt;\"\n      }\n    }\n  ]\n}\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Explicaci\u00f3n del ejemplo<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>currentResult<\/strong>: Muestra las puntuaciones de la prueba m\u00e1s reciente. Proporciona un desglose detallado del rendimiento, accesibilidad, mejores pr\u00e1cticas y puntuaciones de SEO para configuraciones m\u00f3viles y de escritorio, junto con URLs hacia sus respectivos informes HTML.<\/li>\n\n\n\n<li><strong>history<\/strong>: Contiene un conjunto de resultados pasados para la misma URL. Cada entrada refleja la estructura de <strong>currentResult<\/strong>, documentando la evoluci\u00f3n de las m\u00e9tricas del sitio a lo largo del tiempo. Esto es valioso para rastrear mejoras o regresiones tras actualizaciones u optimizaciones.<\/li>\n<\/ul>\n\n\n\n<p>Este formato de respuesta integral permite a los desarrolladores obtener r\u00e1pidamente una visi\u00f3n general de las \u00faltimas m\u00e9tricas de rendimiento del sitio al tiempo que mantienen un registro hist\u00f3rico para an\u00e1lisis de tendencias y seguimiento de rendimiento a largo plazo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Probar rendimiento en entornos protegidos con Lighthouse<\/h2>\n\n\n\n<p>Al aprovechar la potencia de Lighthouse, Node.js y Express, podemos crear un entorno de prueba robusto para aproximar las capacidades de PageSpeed Insights de Google mientras ofrecemos funciones adicionales adaptadas a las necesidades de los desarrolladores que trabajan en entornos de desarrollo seguros o restringidos.<\/p>\n\n\n\n<p>Este m\u00e9todo mejora tu capacidad para optimizar el rendimiento del sitio y asegura que tu experiencia de prueba sea lo m\u00e1s cercana posible a tu entorno en vivo.<\/p>\n\n\n\n<p>Si encontraste \u00fatil este post, <a href=\"https:\/\/wcanvas.com\/es\/blogs\/\" target=\"_blank\" rel=\"noreferrer noopener\">le\u00e9 nuestro blog<\/a> y <a href=\"https:\/\/wcanvas.com\/es\/resources\/\" target=\"_blank\" rel=\"noreferrer noopener\">recursos para desarrolladores<\/a> para m\u00e1s ideas y gu\u00edas!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfAlguna vez no pudiste usar PageSpeed Insights para probar tus sitios cuando trabaj\u00e1s con desarrollos locales o protecciones de autenticaci\u00f3n b\u00e1sica, como las de sitios transferibles de WPEngine y otros entornos protegidos? Esta limitaci\u00f3n requiere una soluci\u00f3n que te permita aproximar los resultados de PageSpeed Insights con una herramienta que pueda acceder a entornos protegidos. [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":4224,"template":"","resource-categories":[87],"class_list":["post-10910","resources","type-resources","status-publish","has-post-thumbnail","hentry","resource-categories-node-es"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>C\u00f3mo simular PageSpeed Insights con Lighthouse - White Canvas<\/title>\n<meta name=\"description\" content=\"PageSpeed Insights no prueba entornos restringidos. Evalu\u00e1 el rendimiento del sitio localmente utilizando Lighthouse, Node.js y Express.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wcanvas.com\/es\/resource\/como-simular-pagespeed-insights-con-lighthouse\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C\u00f3mo simular PageSpeed Insights con Lighthouse - White Canvas\" \/>\n<meta property=\"og:description\" content=\"PageSpeed Insights no prueba entornos restringidos. Evalu\u00e1 el rendimiento del sitio localmente utilizando Lighthouse, Node.js y Express.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wcanvas.com\/es\/resource\/como-simular-pagespeed-insights-con-lighthouse\/\" \/>\n<meta property=\"og:site_name\" content=\"White Canvas\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-09T17:10:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wcanvas.com\/wp-content\/uploads\/2024\/05\/approximate-PageSpeed-insights-HERO.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"528\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\n\t    \"@context\": \"https:\/\/schema.org\",\n\t    \"@graph\": [\n\t        {\n\t            \"@type\": \"WebPage\",\n\t            \"@id\": \"https:\/\/wcanvas.com\/es\/resource\/como-simular-pagespeed-insights-con-lighthouse\/\",\n\t            \"url\": \"https:\/\/wcanvas.com\/es\/resource\/como-simular-pagespeed-insights-con-lighthouse\/\",\n\t            \"name\": \"C\u00f3mo simular PageSpeed Insights con Lighthouse - White Canvas\",\n\t            \"isPartOf\": {\n\t                \"@id\": \"https:\/\/wcanvas.com\/es\/#website\"\n\t            },\n\t            \"primaryImageOfPage\": {\n\t                \"@id\": \"https:\/\/wcanvas.com\/es\/resource\/como-simular-pagespeed-insights-con-lighthouse\/#primaryimage\"\n\t            },\n\t            \"image\": {\n\t                \"@id\": \"https:\/\/wcanvas.com\/es\/resource\/como-simular-pagespeed-insights-con-lighthouse\/#primaryimage\"\n\t            },\n\t            \"thumbnailUrl\": \"https:\/\/wcanvas.com\/wp-content\/uploads\/2024\/05\/approximate-PageSpeed-insights-HERO.jpg\",\n\t            \"datePublished\": \"2024-05-07T16:52:41+00:00\",\n\t            \"dateModified\": \"2024-12-09T17:10:47+00:00\",\n\t            \"description\": \"PageSpeed Insights no prueba entornos restringidos. Evalu\u00e1 el rendimiento del sitio localmente utilizando Lighthouse, Node.js y Express.\",\n\t            \"breadcrumb\": {\n\t                \"@id\": \"https:\/\/wcanvas.com\/es\/resource\/como-simular-pagespeed-insights-con-lighthouse\/#breadcrumb\"\n\t            },\n\t            \"inLanguage\": \"es\",\n\t            \"potentialAction\": [\n\t                {\n\t                    \"@type\": \"ReadAction\",\n\t                    \"target\": [\n\t                        \"https:\/\/wcanvas.com\/es\/resource\/como-simular-pagespeed-insights-con-lighthouse\/\"\n\t                    ]\n\t                }\n\t            ]\n\t        },\n\t        {\n\t            \"@type\": \"ImageObject\",\n\t            \"inLanguage\": \"es\",\n\t            \"@id\": \"https:\/\/wcanvas.com\/es\/resource\/como-simular-pagespeed-insights-con-lighthouse\/#primaryimage\",\n\t            \"url\": \"https:\/\/wcanvas.com\/wp-content\/uploads\/2024\/05\/approximate-PageSpeed-insights-HERO.jpg\",\n\t            \"contentUrl\": \"https:\/\/wcanvas.com\/wp-content\/uploads\/2024\/05\/approximate-PageSpeed-insights-HERO.jpg\",\n\t            \"width\": 1200,\n\t            \"height\": 528,\n\t            \"caption\": \"vector illustration of a mobile phone testing its internet speed\"\n\t        },\n\t        {\n\t            \"@type\": \"BreadcrumbList\",\n\t            \"@id\": \"https:\/\/wcanvas.com\/es\/resource\/como-simular-pagespeed-insights-con-lighthouse\/#breadcrumb\",\n\t            \"itemListElement\": [\n\t                {\n\t                    \"@type\": \"ListItem\",\n\t                    \"position\": 1,\n\t                    \"name\": \"Home\",\n\t                    \"item\": \"https:\/\/wcanvas.com\/es\/\"\n\t                },\n\t                {\n\t                    \"@type\": \"ListItem\",\n\t                    \"position\": 2,\n\t                    \"name\": \"Resources\",\n\t                    \"item\": \"https:\/\/wcanvas.com\/es\/resources\/\"\n\t                },\n\t                {\n\t                    \"@type\": \"ListItem\",\n\t                    \"position\": 3,\n\t                    \"name\": \"C\u00f3mo simular PageSpeed Insights con Lighthouse\"\n\t                }\n\t            ]\n\t        },\n\t        {\n\t            \"@type\": \"WebSite\",\n\t            \"@id\": \"https:\/\/wcanvas.com\/es\/#website\",\n\t            \"url\": \"https:\/\/wcanvas.com\/es\/\",\n\t            \"name\": \"White Canvas\",\n\t            \"description\": \"\",\n\t            \"publisher\": {\n\t                \"@id\": \"https:\/\/wcanvas.com\/es\/#organization\"\n\t            },\n\t            \"potentialAction\": [\n\t                {\n\t                    \"@type\": \"SearchAction\",\n\t                    \"target\": {\n\t                        \"@type\": \"EntryPoint\",\n\t                        \"urlTemplate\": \"https:\/\/wcanvas.com\/es\/?s={search_term_string}\"\n\t                    },\n\t                    \"query-input\": {\n\t                        \"@type\": \"PropertyValueSpecification\",\n\t                        \"valueRequired\": true,\n\t                        \"valueName\": \"search_term_string\"\n\t                    }\n\t                }\n\t            ],\n\t            \"inLanguage\": \"es\"\n\t        },\n\t        {\n\t            \"@type\": \"Organization\",\n\t            \"@id\": \"https:\/\/wcanvas.com\/es\/#organization\",\n\t            \"name\": \"White Canvas\",\n\t            \"url\": \"https:\/\/wcanvas.com\/es\/\",\n\t            \"logo\": {\n\t                \"@type\": \"ImageObject\",\n\t                \"inLanguage\": \"es\",\n\t                \"@id\": \"https:\/\/wcanvas.com\/es\/#\/schema\/logo\/image\/\",\n\t                \"url\": \"https:\/\/wcanvas.com\/wp-content\/uploads\/2023\/01\/logowhitecanvas.svg\",\n\t                \"contentUrl\": \"https:\/\/wcanvas.com\/wp-content\/uploads\/2023\/01\/logowhitecanvas.svg\",\n\t                \"width\": 115,\n\t                \"height\": 32,\n\t                \"caption\": \"White Canvas\"\n\t            },\n\t            \"image\": {\n\t                \"@id\": \"https:\/\/wcanvas.com\/es\/#\/schema\/logo\/image\/\"\n\t            },\n\t            \"alternateName\": \"Wcanvas\",\n\t            \"contactPoint\": [\n\t                {\n\t                    \"@type\": \"ContactPoint\",\n\t                    \"telephone\": \"+1 (347) 688 2902\",\n\t                    \"contactType\": \"sales\",\n\t                    \"contactOption\": \"TollFree\",\n\t                    \"areaServed\": \"US\",\n\t                    \"availableLanguage\": \"en\"\n\t                },\n\t                {\n\t                    \"@type\": \"ContactPoint\",\n\t                    \"telephone\": \"+54 (11) 5236 4717\",\n\t                    \"contactType\": \"sales\",\n\t                    \"contactOption\": \"TollFree\",\n\t                    \"areaServed\": \"AR\",\n\t                    \"availableLanguage\": \"es\"\n\t                }\n\t            ]\n\t        }\n\t    ]\n\t}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"C\u00f3mo simular PageSpeed Insights con Lighthouse - White Canvas","description":"PageSpeed Insights no prueba entornos restringidos. Evalu\u00e1 el rendimiento del sitio localmente utilizando Lighthouse, Node.js y Express.","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:\/\/wcanvas.com\/es\/resource\/como-simular-pagespeed-insights-con-lighthouse\/","og_locale":"es_ES","og_type":"article","og_title":"C\u00f3mo simular PageSpeed Insights con Lighthouse - White Canvas","og_description":"PageSpeed Insights no prueba entornos restringidos. Evalu\u00e1 el rendimiento del sitio localmente utilizando Lighthouse, Node.js y Express.","og_url":"https:\/\/wcanvas.com\/es\/resource\/como-simular-pagespeed-insights-con-lighthouse\/","og_site_name":"White Canvas","article_modified_time":"2024-12-09T17:10:47+00:00","og_image":[{"width":1200,"height":528,"url":"https:\/\/wcanvas.com\/wp-content\/uploads\/2024\/05\/approximate-PageSpeed-insights-HERO.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/wcanvas.com\/es\/resource\/como-simular-pagespeed-insights-con-lighthouse\/","url":"https:\/\/wcanvas.com\/es\/resource\/como-simular-pagespeed-insights-con-lighthouse\/","name":"C\u00f3mo simular PageSpeed Insights con Lighthouse - White Canvas","isPartOf":{"@id":"https:\/\/wcanvas.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/wcanvas.com\/es\/resource\/como-simular-pagespeed-insights-con-lighthouse\/#primaryimage"},"image":{"@id":"https:\/\/wcanvas.com\/es\/resource\/como-simular-pagespeed-insights-con-lighthouse\/#primaryimage"},"thumbnailUrl":"https:\/\/wcanvas.com\/wp-content\/uploads\/2024\/05\/approximate-PageSpeed-insights-HERO.jpg","datePublished":"2024-05-07T16:52:41+00:00","dateModified":"2024-12-09T17:10:47+00:00","description":"PageSpeed Insights no prueba entornos restringidos. Evalu\u00e1 el rendimiento del sitio localmente utilizando Lighthouse, Node.js y Express.","breadcrumb":{"@id":"https:\/\/wcanvas.com\/es\/resource\/como-simular-pagespeed-insights-con-lighthouse\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wcanvas.com\/es\/resource\/como-simular-pagespeed-insights-con-lighthouse\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/wcanvas.com\/es\/resource\/como-simular-pagespeed-insights-con-lighthouse\/#primaryimage","url":"https:\/\/wcanvas.com\/wp-content\/uploads\/2024\/05\/approximate-PageSpeed-insights-HERO.jpg","contentUrl":"https:\/\/wcanvas.com\/wp-content\/uploads\/2024\/05\/approximate-PageSpeed-insights-HERO.jpg","width":1200,"height":528,"caption":"vector illustration of a mobile phone testing its internet speed"},{"@type":"BreadcrumbList","@id":"https:\/\/wcanvas.com\/es\/resource\/como-simular-pagespeed-insights-con-lighthouse\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wcanvas.com\/es\/"},{"@type":"ListItem","position":2,"name":"Resources","item":"https:\/\/wcanvas.com\/es\/resources\/"},{"@type":"ListItem","position":3,"name":"C\u00f3mo simular PageSpeed Insights con Lighthouse"}]},{"@type":"WebSite","@id":"https:\/\/wcanvas.com\/es\/#website","url":"https:\/\/wcanvas.com\/es\/","name":"White Canvas","description":"","publisher":{"@id":"https:\/\/wcanvas.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wcanvas.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/wcanvas.com\/es\/#organization","name":"White Canvas","url":"https:\/\/wcanvas.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/wcanvas.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/wcanvas.com\/wp-content\/uploads\/2023\/01\/logowhitecanvas.svg","contentUrl":"https:\/\/wcanvas.com\/wp-content\/uploads\/2023\/01\/logowhitecanvas.svg","width":115,"height":32,"caption":"White Canvas"},"image":{"@id":"https:\/\/wcanvas.com\/es\/#\/schema\/logo\/image\/"},"alternateName":"Wcanvas","contactPoint":[{"@type":"ContactPoint","telephone":"+1 (347) 688 2902","contactType":"sales","contactOption":"TollFree","areaServed":"US","availableLanguage":"en"},{"@type":"ContactPoint","telephone":"+54 (11) 5236 4717","contactType":"sales","contactOption":"TollFree","areaServed":"AR","availableLanguage":"es"}]}]}},"_links":{"self":[{"href":"https:\/\/wcanvas.com\/es\/wp-json\/wp\/v2\/resources\/10910","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wcanvas.com\/es\/wp-json\/wp\/v2\/resources"}],"about":[{"href":"https:\/\/wcanvas.com\/es\/wp-json\/wp\/v2\/types\/resources"}],"author":[{"embeddable":true,"href":"https:\/\/wcanvas.com\/es\/wp-json\/wp\/v2\/users\/2"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wcanvas.com\/es\/wp-json\/wp\/v2\/media\/4224"}],"wp:attachment":[{"href":"https:\/\/wcanvas.com\/es\/wp-json\/wp\/v2\/media?parent=10910"}],"wp:term":[{"taxonomy":"resource-categories","embeddable":true,"href":"https:\/\/wcanvas.com\/es\/wp-json\/wp\/v2\/resource-categories?post=10910"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}