Autor: Ger

  • Torres de vivienda

    1 de Septiembre de 2021

  • Placa OLED TTGO LoRa32 SX1276

    LoRa es una tecnología inalámbrica versátil y eficiente en energía que se utiliza comúnmente en aplicaciones de IoT, seguimiento remoto y comunicaciones de larga distancia. Su capacidad para alcanzar distancias significativas con bajo consumo de energía la hace adecuada para una variedad de casos de uso en los que se requiere una conectividad inalámbrica confiable y de bajo costo.

    TTGO LoRa32 SX1276 OLED es una placa de desarrollo ESP32 con un chip LoRa integrado y una pantalla OLED SSD1306 de 0,96 pulgadas. En esta guía, le mostraremos cómo: enviar y recibir paquetes LoRa (comunicación punto a punto) y usar la pantalla OLED con Arduino IDE.

    Utilizando Arduino IDE para la comunicación LoRa y la pantalla OLED SSD1306 de 0,96 pulgadas. Asegúrate de que ya tengas Arduino IDE instalado en tu computadora antes de empezar.

    Paso 1: Preparación del Hardware

    Asegurarse de que la placa TTGO LoRa32 SX1276 OLED esté correctamente conectada al ordenador a través de un cable USB.

    Paso 2: Instalación del Soporte de ESP32 en Arduino IDE

    1. Abrir Arduino IDE.
    2. “Archivo” -> “Preferencias”.
    3. En la sección “URLs adicionales de tarjetas de gestor de tarjetas”, agregar la siguiente URL, clic en
    1. https://dl.espressif.com/dl/package_esp32_index.json
    2. “Herramientas” -> “Placa” -> “Gestor de tarjetas…”
    3. Busca “esp32” e instala el soporte para ESP32 de Espressif.

    Paso 3: Instalación de las Bibliotecas Necesarias

    Para utilizar LoRa y la pantalla OLED, se debe instalar las siguientes bibliotecas:

    1. Biblioteca ESP32 LoRa: “Herramientas” -> “Gestor de Bibliotecas…”, buscar “ESP32 LoRa”. Instala la biblioteca proporcionada por Sandeep Mistry.
    2. Biblioteca Adafruit SSD1306: “Herramientas” -> “Gestor de Bibliotecas…”, buscar “Adafruit SSD1306”. Instalar la biblioteca de Adafruit.

    Paso 4: Código de Ejemplo para la Comunicación LoRa

    A continuación, un ejemplo de código básico para enviar y recibir datos LoRa entre dos placas TTGO LoRa32 SX1276 OLED.

    #include <Wire.h>
    #include <Adafruit_SSD1306.h>
    #include <SPI.h>
    #include <LoRa.h>
    
    #define OLED_RESET    -1
    #define SCREEN_WIDTH  128
    #define SCREEN_HEIGHT 64
    
    Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
    
    void setup() {
      if (!LoRa.begin(433E6)) {
        Serial.println("Error initializing LoRa.");
        while (1);
      }
    
      display.begin(SSD1306_I2C_ADDRESS, OLED_RESET);
      display.display();
      delay(2000);
      display.clearDisplay();
      display.setTextSize(1);
      display.setTextColor(SSD1306_WHITE);
      display.setCursor(0, 0);
      display.print("LoRa Sender");
      display.display();
      delay(2000);
    }
    
    void loop() {
      display.clearDisplay();
      display.setCursor(0, 0);
      display.print("Sending LoRa...");
      display.display();
    
      // Enviar un mensaje
      LoRa.beginPacket();
      LoRa.print("¡Hola, mundo!");
      LoRa.endPacket();
      delay(10000); // Esperar 10 segundos antes de enviar el siguiente mensaje
    }
    

  • Tecnología de Comunicación de Campo Cercano: NFC (Near Field Communication)

    NFC (Near Field Communication) es una tecnología de comunicación inalámbrica de corto alcance (unos pocos centímetros) que permite el intercambio de datos entre dispositivos compatibles. Es la base de pagos contactless, llaves digitales, tarjetas de transporte y más.

    En electrónica de prototipado, NFC se usa para interactuar con tarjetas, llaveros y smartphones compatibles.

    Hay varios módulos disponibles en el mercado para incorporar NFC en proyectos con microcontroladores. Aquí vamos a explicar los dos más comunes y dar ejemplos prácticos para usarlos.

    1️⃣ Módulo PN532 V3 (el “rojo”)

    Este es uno de los más populares. Se reconoce por su PCB roja (versión v3 más frecuente) y su chip PN532, compatible con ISO/IEC 14443 (MIFARE, NFC-A).

    ✔️ Características:

    • Compatible con SPI, I2C y UART
    • Soporta lectura y escritura de tarjetas MIFARE Classic y Ultralight
    • Puede actuar como lector o emulador
    • Buen soporte en bibliotecas

    ✔️ Uso típico:

    • Lectura de llaveros y tarjetas NFC
    • Proyectos de acceso sin llave
    • Pagos simulados o demo
    • Comunicación con smartphones (algunos soportan lectura)

    🔧 Ejemplo de conexión (ESP32 o Arduino UNO)

    • VCC → 3.3V o 5V (según versión)
    • GND → GND
    • SDA → Pin 21 (ESP32) o A4 (Arduino UNO)
    • SCL → Pin 22 (ESP32) o A5 (Arduino UNO)
    #include <Wire.h>
    #include <Adafruit_PN532.h>
    
    // ESP32 pins
    #define SDA_PIN 21
    #define SCL_PIN 22
    
    Adafruit_PN532 nfc(SDA_PIN, SCL_PIN);
    
    void setup() {
      Serial.begin(115200);
      Serial.println("Iniciando NFC...");
    
      nfc.begin();
      uint32_t versiondata = nfc.getFirmwareVersion();
      if (!versiondata) {
        Serial.println("No se encontró el PN532");
        while (1);
      }
      nfc.SAMConfig();
      Serial.println("Esperando tarjeta...");
    }
    
    void loop() {
      uint8_t success;
      uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 };
      uint8_t uidLength;
    
      success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
    
      if (success) {
        Serial.print("UID de tarjeta: ");
        for (uint8_t i=0; i < uidLength; i++) {
          Serial.print(uid[i], HEX); Serial.print(" ");
        }
        Serial.println();
        delay(1000);
      }
    }
    
    

    2️⃣ Módulo MFRC522

    Otro muy común y muy barato. Es más limitado pero muy usado en makerspaces.

    ✔️ Características:

    • Compatible con SPI
    • Lectura de tarjetas MIFARE Classic
    • Muy económico
    • Buen soporte en Arduino IDE

    ✔️ Limitaciones:

    • No soporta todos los estándares NFC
    • No puede actuar como emulador

    🔧 Ejemplo de conexión (ESP32 o Arduino UNO)

    • VCC → 3.3V
    • GND → GND
    • RST → Pin 5
    • SDA → Pin 21 (ESP32) o 10 (Arduino UNO)
    • MOSI → Pin 23 (ESP32) o 11 (Arduino UNO)
    • MISO → Pin 19 (ESP32) o 12 (Arduino UNO)
    • SCK → Pin 18 (ESP32) o 13 (Arduino UNO)
    #include <SPI.h>
    #include <MFRC522.h>
    
    #define SS_PIN 21
    #define RST_PIN 5
    
    MFRC522 mfrc522(SS_PIN, RST_PIN);
    
    void setup() {
      Serial.begin(115200);
      SPI.begin();
      mfrc522.PCD_Init();
      Serial.println("Aproxime la tarjeta NFC...");
    }
    
    void loop() {
      if (!mfrc522.PICC_IsNewCardPresent() || !mfrc522.PICC_ReadCardSerial()) return;
    
      Serial.print("UID de tarjeta: ");
      for (byte i = 0; i < mfrc522.uid.size; i++) {
        Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
        Serial.print(mfrc522.uid.uidByte[i], HEX);
      }
      Serial.println();
      mfrc522.PICC_HaltA();
    }
    
    

    ¿Cuál elegir?

    PN532 (rojo v3)

    • Más versátil
    • Emulación y lectura
    • I2C/SPI/UART
    • Mejor para NFC con móviles

    MFRC522

    • Muy barato
    • Simple
    • Solo lectura MIFARE Classic
    • Solo SPI

    Algunas imagenes sobre tags (mas viejunos)

    -> Comunicación de Campo cercano (NFC)

    -> Etiquetas de frecuencia ultra alta (UHF)

    En la implementación de una solución RFID, es primordial comprender las diferencias entre cada tipo de RFID.

    ¿Qué son las etiquetas RFID?

    La tecnología RFID se basa en ondas de radio para enviar y recibir información entre una etiqueta y un lector. En su nivel más simple, un lector RFID envía una señal a una etiqueta RFID y la etiqueta devuelve una señal con información.

    Se puede programar información única, por ejemplo:

    Código Electrónico de Producto (EPC) GS1 / GS1 Electronic Product Code™ (EPC)

    Cada etiqueta RFID individual, se puede fijar a productos, cajas, llaveros y teléfonos móviles.

    Al igual que con los clásicos “Códigos de barras”, las etiquetas RFID se usan para recuperar de manera rápida información a nivel de producto (o paquete, o pallet con muchos productos).

    Como las etiquetas RFID usan tecnología de ondas de radio, no requieren una línea de visión directa para ser leídas, lo que permite que se pueden leer contenedores enteros o camiones repletos de productos de a cientos de productos por segundo.

    Esto otorga que las etiquetas RFID una clara ventaja cuando se trata de impulsar la visibilidad y la eficiencia a nivel de la cadena de suministro (lo que se denomina seguimiento inteligente de etiquetas o “smart label tracking” en inglés).

    Además de los beneficios en el campo de la logística, instituciones de toda índole están aprovechando las etiquetas RFID para interactuar con el público a nivel personal, lo que permite acceder a contenido en bares, centros educativas, lugares recreativos y más.

  • Timers o Temporizadores Arduino

    ¿Qué es TIMER en Electrónica Embebida?

    El temporizador es una especie de interrupción. Es como un reloj simple que puede medir el intervalo de tiempo de un evento. Cada microcontrolador tiene un reloj (oscilador), digamos que en Arduino Uno es de 16Mhz. Este es el responsable de la velocidad. Cuanto mayor sea la frecuencia de reloj, mayor será la velocidad de procesamiento. Un temporizador utiliza un contador que cuenta a cierta velocidad dependiendo de la frecuencia del reloj. En Arduino Uno se necesitan 1/16000000 segundos o 62 nanosegundos para hacer un solo conteo. Lo que significa que Arduino se mueve de una instrucción a otra instrucción por cada 62 nanosegundos.

    En esta página se buscan establecer nuestros bits de registro del temporizador para usar la interrupción de desbordamiento del temporizador para alternar un LED cada vez que ocurra una interrupción.

    El valor del precargador del bit del temporizador también se puede ajustar usando botones para controlar la duración en la que ocurre la interrupción.

    Timers / Temporizadores en Arduino UNO

    En Arduino UNO hay tres temporizadores que se utilizan para diferentes funciones.

    Timer0 / Temporizador0:

    Es un temporizador de 8 bits y se utiliza en funciones de temporizador como delay(), millis().

    Timer1 / Temporizador1:

    Es un temporizador de 16 bits y se usa en la biblioteca de servos.

    Timer2/Temporizador2:

    Es un temporizador de 8 bits y se utiliza en la función tone().

    Registros de Timer de Arduino

    Para cambiar la configuración de los temporizadores, se utilizan registros de temporizador.

    A) TIMER1: Registros de control de temporizador / Timer (TCCRnA/B):

    Este registro contiene los bits de control principales del temporizador y se utiliza para controlar los preescaladores del temporizador. También permite controlar el modo de temporizador usando los bits WGM.

    TCCR1A76543210
     COM1A1COM1A0COM1B1COM1B0COM1C1COM1C0WGM11WGM10
    TCCR1B76543210
     ICNC1ICES1WGM13WGM12CS12CS11CS10

    Prescaler / Preescalador

    Los bits CS12, CS11, CS10 en TCCR1B establecen el valor del preescalador. Se utiliza un preescalador para configurar la velocidad del reloj del temporizador. Arduino Uno tiene preescaladores de 1, 8, 64, 256, 1024.

    CS12CS11CS10Uso
    000No Clock Timer STOP
    001CLCK i/o /1 No Prescaling
    010CLK i/o /8 (From Prescaler)
    011CLK i/o /64 (From Prescaler)
    100CLK i/o /256 (From Prescaler)
    101CLK i/o /1024 (From Prescaler)
    110External clock source on T1 Pin. Clock on falling edge  
    111External Clock source on T1 pin. Clock on rising edge.

    B) TIMER 2: Registro de temporizador/contador (TCNTn)

    Este registro se utiliza para controlar el valor del contador y establecer un valor de precarga. Fórmula para el valor del precargador para el tiempo requerido en segundos: TCNTn = 65535 – (16x1010xTiempo en segundos / Valor del preescalador) Para calcular el valor del precargador para el temporizador 1 durante un tiempo de 2 segundos:

    TCNT1  = 65535 – (16×106x2 / 1024) = 34285

    Interrupciones del temporizador de Arduino


    Hay varias interrupciones de temporizador en Arduino:


    a) Interrupción de desbordamiento del temporizador:

    Cada vez que el temporizador alcanza su valor máximo, por ejemplo (16 Bit-65535), se produce la interrupción de desbordamiento del temporizador. Por lo tanto, se llama a una rutina de servicio de interrupción ISR cuando el bit de interrupción de desbordamiento del temporizador está habilitado en el TOIEx presente en el registro de máscara de interrupción del temporizador TIMSKx.

    Formato de la función ISR:

    ISR(TIMER1_COMPA_vect)
    {
    }

    Registro de comparación de salida (OCRnA/B):

    Aquí, cuando se produce la interrupción de coincidencia de comparación de salida, se llama al servicio de interrupción ISR (TIMERx_COMPy_vect) y también se establecerá el bit indicador OCFxy en el registro TIFRx. Este ISR se habilita configurando el bit de habilitación en OCIExy presente en el registro TIMSKx. Donde TIMSKx es Registro de máscara de interrupción de temporizador.

    Captura de entrada de temporizador:

    A continuación, cuando se produce la interrupción de captura de entrada del temporizador, se llama al servicio de interrupción ISR (TIMERx_CAPT_vect) y también se establece el bit indicador ICFx en TIFRx (registro de indicador de interrupción del temporizador). Este ISR se habilita configurando el bit de habilitación en ICIEx presente en el registro TIMSKx.

  • Programación

    La programación es el proceso utilizado para idear y ordenar las acciones necesarias para realizar un proyecto, preparar ciertas máquinas o aparatos para que empiecen a funcionar en el momento y en la forma deseados o elaborar programas para su empleo en computadoras.

  • Proyecto luminotecnia edificio+terreno

    Proyecto luminotecnia edificio+terreno

    Volumetría de espacios funcionales

  • Operadores de Desplazamiento de Bits

    Los símbolos “<<” y “>>” se llaman “operadores de desplazamiento de bits” en programación. Estos operadores se utilizan para mover los bits de un valor hacia la izquierda o hacia la derecha en su representación binaria. Aquí tienes una breve descripción de ambos operadores:

    1. Operador de desplazamiento hacia la izquierda (<<): Este operador desplaza los bits de un valor hacia la izquierda y completa con ceros en el lado derecho. Cada vez que se realiza un desplazamiento hacia la izquierda, el valor se multiplica por 2 elevado a la potencia del número de lugares que se desplazó.
    2. Operador de desplazamiento hacia la derecha (>>): Este operador desplaza los bits de un valor hacia la derecha y completa con ceros o con el bit de signo en el lado izquierdo, dependiendo del tipo de dato. Cada vez que se realiza un desplazamiento hacia la derecha, el valor se divide por 2 elevado a la potencia del número de lugares que se desplazó.

    Estos operadores son útiles para (valga la redundancia) realizar operaciones de bajo nivel en la representación binaria de datos, como combinar o dividir bytes, multiplicar o dividir por potencias de 2, entre otros.

  • Sesiones en PHP

    Una sesión es una forma de almacenar información (en variables) que se utilizará en varias páginas

    A diferencia de una cookie, la información no se almacena en el equipo del usuario

    ¿Qué es una sesión PHP?



    Cuando trabaja con una aplicación, la abre, hace algunos cambios y luego la cierra. Esto es muy parecido a una sesión. La computadora sabe quién eres. Sabe cuándo inicia la aplicación y cuándo finaliza. Pero en Internet hay un problema: el servidor web no sabe quién es usted ni qué hace, porque la dirección HTTP no mantiene el estado.

    Las variables de sesión resuelven este problema almacenando la información del usuario que se utilizará en varias páginas (por ejemplo, nombre de usuario, color favorito, etc.). De forma predeterminada, las variables de sesión duran hasta que el usuario cierra el navegador.

    Entonces; Las variables de sesión contienen información sobre un solo usuario y están disponibles para todas las páginas en una aplicación.

    Iniciar una sesión de PHP


    Se inicia una sesión con la función session_start ().

    Las variables de sesión se establecen con la variable global de PHP: $ _SESSION.

    Ahora, creemos una nueva página llamada “demo_session1.php”. En esta página, iniciamos una nueva sesión de PHP y establecemos algunas variables de sesión:

  • Cookies en WordPress y PHP_Session: Todo lo que necesitas saber

    Las cookies fueron inventadas por primera vez en 1994 por un programador llamado Lou Montulli. sino la web sería un lugar muy diferente.

    Ya sea que inicies sesión en el back-end de su sitio de WordPress o cierres una ventana emergente molesta, se usan e interactúan ookies todos los días (incluso si no te das cuenta).

    A estas alturas, probablemente hayas adivinado que cuando nos referimos a las cookies, nos referimos a las cookies que se utilizan para almacenar información importante de los visitantes en un sitio web, no a las deliciosas chispas de chocolate. 🍪

    Hoy vamos a sumergirnos en el tema, a veces confuso, de las cookies y las sesiones de PHP. Específicamente, todo lo que necesita saber sobre cómo los usa WordPress, junto con algunos problemas comunes que debe conocer (especialmente como desarrollador) cuando se trata de alojar su sitio web, código personalizado o usar un complemento de terceros. En nuestra opinión, este tema no se discute lo suficiente.

    ¿Qué son las cookies?


    Una cookie (también conocida como cookie web, cookie de seguimiento, cookie HTTP, cookie del navegador) es una pequeña parte de los datos almacenados por el navegador de un usuario (Chrome, Firefox, etc.) cuando visita un sitio web. Contiene información sobre la actividad de navegación y normalmente se utiliza para personalizar la experiencia del usuario o con fines de autenticación y verificación. Las cookies de sesión y las cookies persistentes son tipos comunes de cookies.

    Tipos de cookies

    Hay dos tipos diferentes de cookies que se establecen comúnmente: cookies de sesión y cookies persistentes.


    Cookies de sesión


    Las cookies de sesión, también conocidas como cookies transitorias, son temporales. No tienen una fecha de vencimiento adjunta y solo almacenan información sobre lo que hace el usuario durante una sola sesión. Una sesión es simplemente un valor único / generado aleatoriamente que se asigna cuando alguien visita un sitio web. Las cookies de sesión se almacenan temporalmente en la memoria y se eliminan automáticamente cuando el navegador se cierra o la sesión finaliza.

    Cookies persistentes


    Las cookies persistentes, como habrás adivinado, son aquellas que contienen una fecha de vencimiento. Estos duran mucho más y se almacenan en el disco hasta que caducan o el usuario los borra manualmente. A veces, también se las denomina “cookies de seguimiento”, ya que son los tipos de cookies que utilizan Google Analytics, AdRoll, Stripe, etc.


    Cómo usa WordPress Core las cookies


    Cuando nos referimos al núcleo de WordPress, simplemente nos referimos a los archivos que componen el proyecto de código abierto, antes de instalar complementos o temas de terceros. Es WordPress en su estado “original”.

    Ya conociendo los conceptos básicos de qué es una cookie y los diferentes tipos, veamos a por qué y cómo las usa el núcleo de WordPress para hacer que toda esa magia suceda detrás de escena.

    El núcleo de WordPress utiliza cookies para dos propósitos diferentes:

    1. Cookies de inicio de sesión

    Las cookies de inicio de sesión contienen detalles de autenticación y se utilizan cuando un usuario inicia sesión en el panel de administración de WordPress. Según el Codex de WordPress, se establecen un par de cookies de sesión diferentes:

    Al iniciar sesión, WordPress usa la cookie wordpress_ [hash] para almacenar los detalles de autenticación (limitado al área / wp-admin /).
    Después de iniciar sesión, WordPress establece la cookie wordpress_logged_in_ [hash]. Esto indica cuándo inició sesión y quién es usted.

    Al acceder al back-end del sitio de WordPress, se realiza una verificación para ver si las dos cookies anteriores existen y no han expirado. Esto es lo que le permite omitir la pantalla wp-login.php. 😉

    WordPress también establece wp-settings- {time} – [UID] cookies. El ID es su ID de usuario de la tabla de la base de datos de usuarios de WordPress. Esto almacena la configuración del panel de control personal y la interfaz de administración.

    2. Cookies de comentarios

    De forma predeterminada, hay cookies configuradas cuando alguien comenta en una publicación de blog (con una caducidad de 347 días). Esto es así, si vuelven más tarde, no tienen que volver a completar toda la información. Se almacenan las siguientes tres cookies:

    comment_author_ [hash]
    comment_author_email_ [hash]
    comment_author_url_ [hash]

    Sin embargo, con los cambios recientes en la política de privacidad debido a GDPR, el núcleo de WordPress ha introducido nuevas herramientas para asegurarse de que permita a los usuarios optar por la configuración de estas cookies. Esta configuración, si aún no está configurada, se puede habilitar en “Configuración → Discusión” en su panel de administración de WordPress. Seleccione la opción para “Mostrar la casilla de verificación de habilitación de cookies de comentarios”. El popular complemento Akismet también le permite mostrar un aviso de privacidad.

    Cómo utilizan las cookies los complementos y temas de WordPress de terceros

    Al igual que WordPress utiliza cookies para determinadas funciones, los complementos y temas de terceros que instala también configuran cookies. La mayoría de ellos usa una combinación de cookies del navegador y filas de la base de datos almacenadas en la tabla wp_options o en su propia tabla personalizada.

    Estos son solo algunos de los muchos ejemplos de para qué se utilizan las cookies:


    -Si tiene un cuadro emergente en su sitio de WordPress y un visitante lo cierra, esto normalmente establecerá una cookie para que no vuelva a aparecer.
    -Artículos agregados a un carrito de compras en su sitio de comercio electrónico. Se almacena una cookie para que el carrito de la compra conserve sus productos mientras continúa navegando por el sitio.
    -Las funciones de GeoIP pueden almacenar la dirección IP y las coordenadas de latitud / longitud del visitante que navega por el sitio. Por lo general, esto se usa para mostrar contenido específico a una región determinada o quizás incluso redirigir al usuario a un subsitio diferente.
    -Seguimiento de la actividad a través de los clics con un acortador de enlaces como el complemento PrettyLinks.
    -El complemento de boletín informativo puede establecer una cookie para los usuarios si ya se han suscrito, esto da la capacidad de ocultar el cuadro del boletín por completo.

    Básicamente, cualquier acción u opción de participación en un sitio de WordPress, por lo general, implicará configurar una cookie en el navegador detrás de escena. El objetivo de esto es, por supuesto, intentar ayudar a mejorar la experiencia del navegador o proporcionar funcionalidad adicional a través de la verificación.

    Cookies de WooCommerce

    Los complementos de comercio electrónico como WooCommerce generalmente tienen sus propias cookies adicionales que configuran para que los compradores puedan agregar cosas fácilmente a su carrito, almacenarlas para más tarde cuando realicen la compra e iniciar y cerrar sesión en su cuenta.

    Para realizar un seguimiento de los datos del carrito, WooCommerce establece las siguientes tres cookies (no se almacena información personal en las cookies):

    woocommerce_cart_hash
    woocommerce_items_in_cart
    wp_woocommerce_session_

    Las dos primeras cookies contienen información sobre el carrito y simplemente ayudan a WooCommerce a saber cuándo cambian los datos del carrito. La tercera cookie wp_woocommerce_session_ contiene un código único para cada cliente que corresponde a una entrada en la tabla wp_woocommerce_sessions personalizada de la base de datos.

    Cookies de descargas digitales fáciles


    Easy Digital Downloads usa de forma predeterminada WP_Session, que es una combinación de cookies del navegador y filas de la base de datos almacenadas en la tabla wp_options. A continuación se muestra la cookie que establece:

    edd_items_in_cart

    Cookies y almacenamiento en caché de WordPress

    Cuando se trata de la caché de WordPress, aquí es donde las cosas se complican. El almacenamiento en caché es esencialmente el proceso de almacenar recursos de una solicitud y reutilizar esos recursos para solicitudes posteriores. Básicamente, reduce la cantidad de trabajo necesario para generar una vista de página. Si bien esto es excelente para el rendimiento, causa un problema cuando se trata de cookies.

    ¿Por qué? Porque las cookies están ahí para realizar una determinada acción, como mantener el carrito de la compra lleno mientras navega por un sitio de WooCommerce. Sin embargo, si una página se entrega desde la caché, ni PHP ni la base de datos hacen nada, el servidor simplemente entrega una copia estática de la página.

    ¿Entonces que puedes hacer?

    1. Utilice JavaScript


    La primera opción sería utilizar JavaScript y actualizar el contenido de una página de forma dinámica. Básicamente, tiene marcadores de posición HTML y usa JavaScript para obtener información a través de una API o llamada ajax.

    Un ejemplo sería cargar una lista de publicaciones en la barra lateral de WordPress usando JavaScript para tomar una lista de publicaciones sobre el wp-api y luego representarlas en la barra lateral. En ese escenario, podría actualizar la lista de publicaciones sin borrar la página del caché, ya que los datos se generan dinámicamente.

    Sin embargo, esto no es ideal, siempre es mejor almacenar en caché si es posible en términos de rendimiento. Pero si debe hacer que parte del contenido permanezca dinámico mientras que la página en sí puede permanecer estática (servida desde la caché), esa es una forma de hacerlo: use JavaScript para desplegar el contenido de esa parte de la página dinámicamente a través de una API / ajax llamada. Sin embargo, a menos que pueda contratar a un desarrollador de WordPress para crear una solución de JavaScript personalizada o una extensión de un complemento, esta opción no suele ser práctica.


    2. Utilice las llamadas de Admin-Ajax


    Admin-ajax.php no se puede almacenar en caché, por lo tanto, puede usar las llamadas admin-ajax. Un buen ejemplo de esto es el complemento No Cache AJAX Widgets. Realiza llamadas de administrador ajax y, por lo tanto, no tiene que preocuparse por entrar en conflicto con soluciones de almacenamiento en caché a nivel de servidor o de terceros.

    Sin embargo, al igual que con JavaScript, seguir esta ruta generalmente no es factible para el usuario promedio. También puede provocar otros problemas de rendimiento, como un alto uso de admin-ajax y muchas solicitudes no almacenadas en caché.


    3. Excluir páginas de la caché (cuando la cookie está presente)


    Varos pluguins permiten esta configuración.

    A menos que pueda seguir la ruta de JavaScript o admin-ajax, excluir las páginas del almacenamiento en caché cuando una cookie específica está presente es la mejor manera de hacerlo.

    Ciertas páginas de WooCommerce como carrito, mi cuenta y pago, se excluyen automáticamente del almacenamiento en caché. Existe una regla a nivel de servidor para que los usuarios omitan automáticamente el caché cuando se detecta la cookie woocommerce_items_in_cart o la cookie edd_items_in_cart para garantizar un proceso de pago sin problemas y sincronizado.

    También escuchamos las cookies de inicio de sesión asociadas y configuramos el caché para omitir cuando detectamos que alguien ha iniciado sesión en WordPress. El evita que el tablero de back-end se almacene en caché accidentalmente.

    De forma predeterminada, no excluimos la cookie wp_woocommerce_session_ del almacenamiento en caché. La mayoría de los sitios de WooCommerce en nuestra experiencia no tienen ningún problema. Esto también mejora el rendimiento al aumentar la proporción de HIT de su caché, mientras utiliza menos trabajadores PHP.

    Sin embargo, debido a que hay muchas configuraciones diferentes de temas y complementos de WordPress, podemos excluir la cookie wp_woocommerce_session_ de la caché si es necesario. Comuníquese con nuestro equipo de soporte. El resultado es que una vez que un usuario agrega un producto a su carrito de compras, todas las solicitudes posteriores no se atenderán desde la caché, lo que aumentará el uso de trabajadores PHP.