Simplemente no lo hacemos, en absoluto. Nunca. Diremos esto una y otra vez pero
Almacenamiento en caché! = Rendimiento
Su sitio debe ser rápido sin la adición de FPC (o Barniz para ese hecho). Siempre habrá un momento en que el contenido no esté preparado (su escenario anterior).
En una tienda descargada, los tiempos de carga de la página con FPC no deberían ser mucho más impresionantes que los que no son FPC; Magento es felizmente capaz de < 400ms
cargar tiempos de página en cachés estándar (en páginas de categoría / producto / búsqueda). FPC lo reducirá a < 80ms
, pero viene con advertencias.
- La información de stock / precio está desactualizada hasta la invalidación o el vencimiento de TTL
Los artículos nuevos / búsqueda más relevante no están actualizados hasta la invalidación o el vencimiento de TTL
etc.
Por qué confiar en FPC (o barniz) es una mala idea
Si está buscando asegurarse continuamente de que las memorias caché se ceben manualmente, es probable que haya algunas razones
- No tiene suficientes pisadas naturales para mantener las cachés preparadas (consulte 'Dónde es útil el FPC')
- Tu sitio es demasiado lento sin ellos
No puedes guardar todo en caché
Si toma una tienda con solo 5 categorías, 2 niveles anidados de profundidad, 5 atributos filtrables, 5 opciones de atributos cada uno y 1000 productos; Esas son muchas combinaciones posibles.
25 opciones para elegir, escogiendo una hasta 5 veces seguidas: no soy estadístico , pero sé que eso es ... (suponiendo que la cantidad de opciones de atributos no disminuya por completo)
25 possible URLs on the first selection
20 possible URLs on the second selection
15 possible URLs on the third selection
10 possible URLs on the fourth selection
5 possible URLs on the fifth selection
5^5 = 3,125 possible combinations (for top level categories)
5^4 = 625 possible combinations (for 2nd level categories)
Ok, lo anterior no es un escenario probable, como me imagino, dentro de 3 clics: la cantidad de productos disponibles habría disminuido lo suficiente como para que el cliente encuentre su producto. Entonces, incluso si fuera ...
25 possible URLs on the first selection
10 possible URLs on the second selection
3 possible URLs on the third selection
5^3 = 125 possible URL combinations
Luego multiplicado por 5 categorías, es decir 625 URL. En esta etapa, estamos hablando de un pequeño catálogo e ignorando por completo todas las URL del producto.
Tampoco tenemos en cuenta que si tuviera categorías anidadas con is_anchor
on, aumentará exponencialmente.
Entonces, para rastrear ese volumen de páginas, debe esperar que los tiempos de carga de su página sean agradables y bajos, para que sea un proceso rápido y liviano (por lo tanto, anula el propósito del rastreo), o que tenga tiempo suficiente para que se complete antes de que caduque el TTL.
Si sus páginas tenían un tiempo de carga de la página de 0.4s y usted tenía una CPU de 8 núcleos, entonces ...
625 * 0.4 = 250 / 8 = 31 seconds
0,5 minutos, no está mal, pero imaginemos que tuvo tiempos de carga de página de 2 segundos
625 * 2 = 1250 / 8 = 156 seconds
Pero si tomaste el máximo escenario posible
3,750 * 2 = 7,500 / 8 = 937 seconds ~ 15 minutes
Ese es su servidor de producción, con una carga de CPU del 100% durante 15 minutos. Reduciría la velocidad de rastreo proporcionalmente al TTL que desee.
Entonces, si desea que el contenido tenga un TTL de 3600, el rastreo podría ser 4 veces más lento, es decir. solo un 25% de CPU dedicada al rastreo. Eso es una gran cantidad de recursos solo para mantener el contenido de la categoría preparado: ni siquiera hemos tenido en cuenta los productos, los términos de búsqueda o las vistas adicionales de la tienda en esta etapa
De hecho, solo mirando el tamaño de las combinaciones en la catalog_url_rewrites
tabla (que ni siquiera tiene en cuenta los parámetros de la navegación en capas) dará una idea de cuántas URL podría terminar necesitando rastrear.
Ciertamente, cada tienda será diferente, pero lo que estoy tratando de recordar es que rastrear el sitio para preparar FPC no es práctico. Solo asegúrate de que tu tienda sea rápida para empezar .
Donde FPC es útil
Donde los beneficios de FPC entran en juego es en una tienda muy cargada, donde tienes niveles de tráfico genuinamente altos y los cachés están cebados de forma natural y continua solo por la simple caída del pie.
Luego, FPC entra en juego al reducir los gastos generales de infraestructura en el contenido comúnmente solicitado, reduciendo esas llamadas repetidas al backend de Magento.
Por lo tanto, descubrimos que FPC es excelente para implementar cuando tienes niveles de tráfico muy altos, no para reducir el tiempo de carga de la página, sino para reducir el uso de recursos.
A quién le importa, todavía quiero gatear
Bueno, entonces tienes dos opciones
- Rastrear desde una plantilla (por ejemplo, mapa del sitio)
- Extraiga enlaces página por página y rastree cada uno
Y hay muchas utilidades para hacer ambas cosas, estas son algunas que conozco
- mage-perftest
- HTTrack
- Nutch
- Sphider
- Crawler4j
Usando Mage-Perftest
Puede rastrear su tienda con Mage-Perftest con bastante facilidad, primero descárguelo
wget http://sys.sonassi.com/mage-perftest (64bit) OR
wget http://sys.sonassi.com/mage-perftest-i386 (32bit)
chmod +x http://sys.sonassi.com/mage-perftest*
Luego defina el proceso de rastreo usando el mapa del sitio de Magento (puede personalizarlo haciendo un mapa del sitio de cualquier URL, siempre que las URL estén envueltas en <loc></loc>
etiquetas). El siguiente comando leerá todas las URL del archivo de mapa del sitio, luego rastreará (solo PHP) las URL en el transcurso de 1440 minutos (1 día). Si el servidor supera el 20% de CPU o un promedio de carga de 2, el rastreo se detendrá temporalmente.
./mage-perftest -u www.example.com -s www.example.com/sitemap.xml -r auto -b -d 1440 -z -a 20 -l 2
Si tiene 1000 URL, rastreadas durante 1 día, eso será aprox. 1 solicitud cada 86 segundo (s) ~ objetivo de 0.011 RPS