Almacenar CSS/JS en caché de forma agresiva
Acelere los recursos con GET/HEAD, respuestas 200/301/302/304 y un TTL de 1 día o más; elimine los parámetros de seguimiento de campañas de la clave de caché.
Ayuda de CDN.com.tr
Configure la clave de caché de dominio/ruta, el TTL, métodos/estados, encabezados/cookies, optimización y reglas de límite de velocidad.
Caché, seguridad, WAF y purga
Configure la clave de caché de dominio/ruta, el TTL, métodos/estados, encabezados/cookies, optimización y reglas de límite de velocidad.
Estos ejemplos usan escenarios seguros de origen WordPress para archivos estáticos, cadenas de consulta, encabezados/cookies y rutas de sesión sensibles.
Acelere los recursos con GET/HEAD, respuestas 200/301/302/304 y un TTL de 1 día o más; elimine los parámetros de seguimiento de campañas de la clave de caché.
Omita el caché cuando esté presente una cookie de sesión o carrito; las rutas wp-admin y wp-login nunca deben entrar en el caché compartido.
Ignore Set-Cookie o Cache-Control para las decisiones de caché, oculte X-Origin-Debug/X-Powered-By a los usuarios y active la depuración ascendente solo temporalmente.
Para rutas tipo API, incluya en la clave de caché solo los parámetros de consulta que cambian el contenido y establezca un límite de solicitudes.
Reduzca la regla por dominio, protocolo y expresión regular de ruta antes de cambiar el comportamiento; las reglas amplias `/` necesitan revisión deliberada.
Mantenga los parámetros de consulta en la clave de caché solo cuando cambien el contenido; los parámetros de seguimiento generalmente se eliminan.
El contenido personalizado, de carrito y de administración debe omitir el caché; el contenido estático y anónimo puede recibir TTL.
Ignorar un encabezado de origen para las decisiones de caché es distinto de ocultarlo al cliente.
Los ajustes preestablecidos a nivel de cuenta definen el comportamiento general; Add Rule escribe el comportamiento preciso para un dominio/ruta.
Resultado esperado: Se abre el modal de la regla y la nueva regla se prepara dentro del alcance de la cuenta seleccionada.
cdnctl accounts list
export ACCOUNT_UUID=<selected_account_uuid>
cdnctl cdn advanced-rules list --account "$ACCOUNT_UUID" --format table
Estos campos determinan qué solicitudes coinciden con la regla; una expresión regular demasiado amplia puede cambiar todo el sitio.
Resultado esperado: La regla coincide únicamente con el nombre de host y las rutas de destino.
cat > rule-static-assets.json <<EOF
{"server_domain_names":["www.example.com"],"type":["http","http2"],"path_regex":"^/cdn-help/rules/(cache-demo\\.css|query-demo\\.json)$"}
EOF
cdnctl cdn advanced-rules validate --account "$ACCOUNT_UUID" --file rule-static-assets.json
Para archivos estáticos, elimine los parámetros de consulta de seguimiento de la clave de caché y conserve solo las variantes reales.
Resultado esperado: Los objetos CSS/JSON anónimos se almacenan en caché sin dividir el caché por parámetros de consulta innecesarios.
jq '. + {"cache_query_mode":"ignore_list","cache_query_params":["utm_*","gclid","fbclid","msclkid"],"cache_valid_time":"1 day","allowed_cache_methods":["GET","HEAD"],"allowed_cache_responses":["200","301","302","304"],"response_cache_times":{"200":"1 day","301":"1 week","302":"2 hours","304":"1 day"}}' rule-static-assets.json > rule-static-assets-cache.json
cdnctl cdn advanced-rules validate --account "$ACCOUNT_UUID" --file rule-static-assets-cache.json
Las rutas de administración, inicio de sesión, carrito y pago deben preservar el comportamiento del origen en lugar de devolver aciertos de caché.
Resultado esperado: Las solicitudes de sesión no devuelven contenido en caché compartido a otro usuario.
cat > rule-wordpress-sensitive.json <<EOF
{"server_domain_names":["www.example.com"],"type":["http","http2"],"path_regex":"^/(wp-admin|wp-login\\.php|cart|checkout)(/.*)?$","bypass":"on","bypass_by_cookie":"wordpress_logged_in\nwoocommerce_cart_hash\nwp_woocommerce_session_","limit":30,"per_time":10}
EOF
cdnctl cdn advanced-rules validate --account "$ACCOUNT_UUID" --file rule-wordpress-sensitive.json
Decida por separado si los encabezados de origen afectan las decisiones de caché y si se exponen a los navegadores.
Resultado esperado: Los encabezados de origen se controlan de forma deliberada y la depuración no queda activada en el tráfico de producción.
jq '. + {"ignore_headers":["Cache-Control","Set-Cookie"],"hide_headers":["X-Origin-Debug","X-Powered-By"],"custom_headers":"X-Forwarded-Host: $host\nX-CDN-Rule-Debug: temporary","debug_upstream_headers":true,"image_optimization":"on","white_space":"on"}' rule-static-assets-cache.json > rule-headers-debug.json
cdnctl cdn advanced-rules validate --account "$ACCOUNT_UUID" --file rule-headers-debug.json
Como Save puede activar el flujo de aplicación en vivo, la verificación final se basa en ruta/dominio/TTL/encabezado.
Resultado esperado: Después del éxito de la operación, las solicitudes coincidentes muestran el nuevo comportamiento de caché/encabezado/límite de velocidad.
cdnctl cdn advanced-rules create --account "$ACCOUNT_UUID" --file rule-headers-debug.json
cdnctl operations list --account "$ACCOUNT_UUID"
curl -I "https://www.example.com/cdn-help/rules/cache-demo.css?utm_source=test"
curl -I -H "Cookie: wordpress_logged_in=redacted" "https://www.example.com/wp-admin/"
El área de administración/carrito de WordPress evita el caché mientras los recursos estáticos y las rutas JSON anónimas se almacenan en caché de forma deliberada.
Active la verificación de tres modos desde la página Seguridad, use "Todos" con criterio, lea la tasa de superación.
Todos los controles de seguridad a nivel de cuenta viven en una sola página Seguridad: el interruptor de WAF para todo el sitio, la protección contra bots con JS Challenge, el bloqueo de IP y de país, la protección hotlink, el límite de velocidad de solicitudes y la expiración de enlaces. Cada guardado se despliega al edge automáticamente — no hay un paso de publicación aparte.
Use los registros de WAF para explicar el tráfico bloqueado o desafiado sin exponer los sistemas de registro internos.
Purgue una ruta, una ruta guardada o toda la cuenta y separe el caché del CDN del caché del navegador.
Cada objeto en caché se almacena bajo una clave construida a partir de la solicitud: esquema, host, ruta y cadena de consulta. Una purga solo elimina una entrada cuando apunta exactamente a esa clave. Entender esta única idea explica casi todos los casos de "la purga no funcionó".
Use el encabezado de respuesta X-Proxy-Cache-MT para ver exactamente qué hizo el CDN con una solicitud y verificar que el caché funciona como se espera.