SQLite Object Cache

Descripción

Una caché de objetos persistentes ayuda a que tu sitio funcione bien. Este utiliza la extensión ampliamente disponible SQLite3 para php. Muchos servicios de alojamiento lo ofrecen. Si tu servicio de alojamiento no proporciona memcached o redis, es posible que puedas usar este plugin en su lugar y obtener el beneficio del almacenamiento en caché de objetos.

Las cachés son omnipresentes en la informática, y WordPress tiene su propio subsistema de almacenamiento en caché. Las cachés contienen copias a corto plazo de los resultados de costosas búsquedas o cálculos de bases de datos, y permiten que el software use la copia en lugar de repetir la costosa operación. Este plugin (al igual que otros plugin de almacenamiento en caché de objetos) extiende el subsistema de almacenamiento en caché de WordPress para guardar esas copias a corto plazo de la vista de página a la vista de página. El caché de WordPress resulta ser un caché de memoización.

Sin una caché de objetos persistente, cada vista de página de WordPress debe usar el servidor de base de datos MariaDB o MySQL para recuperar todo sobre tu sitio. Cuando un usuario solicita una página, WordPress comienza desde cero y carga todo lo que necesita del servidor de base de datos. Solo entonces puede entregar contenido al usuario. Con una caché de objetos persistente, WordPress carga inmediatamente gran parte de la información que necesita. Esto aligera la carga en el servidor de base de datos y entrega contenido a los usuarios más rápido.

Gracias a Till Krüss. Su plugin Redis Object Cache sirve como modelo para este. Y gracias a Ari Stathopoulos y Jonny Harris por revisar esto. (Todos los defectos son, por supuesto, enteramente responsabilidad del autor).

Y gracias a Jetbrains por el uso de sus herramientas de desarrollo de software, especialmente PhpStorm. Es difícil imaginar cómo podría desarrollarse un plugin como este sin las herramientas de PhpStorm para explorar bases de código épicas como la de WordPress.

Capturas

  • Panel de ajustes. Accede a él con Ajustes > Caché de objetos.
  • Panel de estadísticas de rendimiento.

Instalación

Puedes instalar «SQLite Object Cache» buscando «SQLite Object Cache» en la pantalla «Plugins > Añadir nuevo» de tu escritorio de WordPress, o siguiendo estos pasos:

  1. Descarga el plugin desde WordPress.org
  2. Sube el archivo ZIP a través de la pantalla ‘Plugins > Añadir nuevo > Subir’ de tu escritorio de WordPress
  3. Activa el plugin a través del menú «Plugins» de WordPress

El plugin ofrece ajustes opcionales para tu archivo wp-config.php. Si los cambias, desactiva primero el plugin, cámbialos y luego reactiva el plugin.

  1. WP_SQLITE_OBJECT_CACHE_DB_FILE. Esta es la ruta del archivo SQLite. El valor predeterminado es …/wp-content/.ht.object_cache.sqlite. Utiliza esta opción si deseas colocar el archivo de caché SQLite fuera de la raíz del documento.
  2. WP_SQLITE_OBJECT_CACHE_TIMEOUT. Este es el tiempo de espera de SQLite en milisegundos. Por defecto: 5000.
  3. WP_SQLITE_OBJECT_CACHE_JOURNAL_MODE Este es el modo de diario SQLite. Por defecto: ‘WAL’. Valores posibles DELETE | TRUNCATE | PERSIST | MEMORY | WAL | NONE.

FAQ

¿Funciona esto con una instalación multisitio de WordPress?

. Para ver la página de Ajustes, elije Ajustes > Caché de Objetos en el sitio principal, o en cualquier sitio, de la instalación multisitio.

¿Cuánto más rápido hará esto mi sitio?

No es posible predecir exactamente la aceleración de cada sitio. Aun así, los resultados de la evaluación comparativa son prometedores. Por favor, lee esto. Si ejecutas una prueba de referencia, házselo saber al autor dejando un comentario en esa página o utilizando el foro de soporte.

¿Qué es SQLite?

SQLite es un software de base de datos rápido y eficaz. No requiere un servidor independiente. En su lugar, se integra en php mediante la extensión SQLite3. Los programas SQLite no necesitan abrir conexiones de red para enviar peticiones y esperar respuestas.

¿Este plugin sustituye MariaDB o MySQL por SQLite?

No. Tu servidor SQL de base de datos MariaDB o MySQL todavía contienen todo tu contenido. Todas las importaciones, exportaciones, copias de seguridad y otras operaciones de base de datos de tu sitio continúan funcionando normalmente. Este plugin utiliza SQLite simplemente para mantener valores con nombre. Por ejemplo, un valor denominado «post|3» contendrá una copia en caché temporal y fácil de recuperar del puesto número 3. Cuando necesite esa publicación, WordPress puede obtenerla rápidamente de SQLite.

Espera, ¿qué? ¿Realmente necesito dos tipos diferentes de base de datos SQL?

No, no es así. Este complemento no utiliza SQLite como servidor de bases de datos completo.

Una caché de objetos persistente necesita algún tipo de mecanismo de almacenamiento. SQLite sirve este plugin como mecanismo de almacenamiento de clave / valor rápido y simple.

Algunos proveedores de alojamiento ofrecen servidores de caché redis escalables de alto rendimiento. Si tu proveedor ofrece redis, es una buena opción. Puedes usarlo a través del complemento Redis Object Cache. Los sitios que usan redis tienen una base de datos SQL y otro esquema de almacenamiento que no es SQL: redis. Otros proveedores de alojamiento ofrecen memcached, que tiene Memcached Object Cache.

Pero muchos proveedores de alojamiento no ofrecen ni redis ni memcached, mientras que sí ofrecen SQLite. Este complemento permite a tu sitio utilizar una caché de objetos persistente incluso sin un servidor de caché independiente.

¿Este plugin es compatible con mi versión de MySQL o MariaDB?

. No requiere ninguna versión específica del servidor de bases de datos.

¿Este plugin es compatible con mi versión de redis o memcached?

No utiliza ninguno de los dos. Por favor, no utilices este plugin si tienes acceso a redis o memcached. En su lugar, utiliza el complemento Redis Object Cache o Memcached Object Cache.

¿Por qué no utilizar el servidor principal de bases de datos MariaDB o MySql del sitio para la caché de objetos?

En WordPress, como en muchos frameworks web, tu servidor de base de datos es un cuello de botella para el rendimiento. Utilizar otro mecanismo para la caché de objetos evita aumentar la carga de trabajo de tu base de datos. Los servidores web sirven páginas utilizando varios procesos php, y cada proceso gestiona su propia carga de trabajo SQLite mientras actualiza un archivo de base de datos compartido. Eso reparte la carga de trabajo de la caché de objetos entre muchos procesos en lugar de centralizarla.

¿Tengo que hacer una copia de seguridad de los datos en SQLite?

No. Es una caché, y todo lo que hay en ella es efímero. Cuando WordPress no encuentra lo que necesita en la caché, simplemente lo vuelve a calcular o lo obtiene de la base de datos.

Para evitar hacer copias de seguridad de archivos SQLite, dile a tu plugin de copia de seguridad que omita los archivos llamados *.sqlite, *.sqlite-wal y *.sqlite-shm.

Este plugin elimina automáticamente la copia de seguridad de los datos SQLite cuando utiliza los plugins Updraft Plus, BackWPUp, o WP STAGING. El plugin Duplicator no ofrece una forma automatizada de suprimir la copia de estos archivos.

Si utilizas algún otro plugin de copia de seguridad o clonación, informa al autor creando untema de debate.

Si ya tengo otra caché de objetos persistentes, ¿puedo utilizar ésta?

No. Sólo necesitas una caché de objetos persistente, y WordPress sólo permite una.

Si tengo una instalación escalable con balanceador de carga, ¿puedo utilizarlo?

No. Si tienes más de un servidor web esto no funciona correctamente. Si operas a esa escala, utiliza redis u otro servidor de caché. (Si no estás seguro de si tienes una instalación con balanceador de carga, es casi seguro que no la tienes).

¿Puedo utilizarlo con el plugin Performance Lab?

Sí, pero primero debes activar este plugin antes de activar Performance Lab. Y, debes desactivar Performance Lab antes de desactivar este plugin por última vez.

El plugin Performance Lab ofrece algunas formas avanzadas y experimentales que hacen que tu sitio sea más rápido. Una de sus funciones utiliza código de inicialización de caché de objetos para iniciar el seguimiento del rendimiento. Así que se requiere un orden de activación si quieres que ambos funcionen.

¿Cómo puedo usar esta caché de objetos para hacer que mi plugin o código de tema se ejecuten más rápido?

Utiliza datos transitorios para almacenar datos cacheables. La Transient API utiliza el almacenamiento en caché de objetos persistentes si está disponible, y la base de datos MariaDB o MySQL cuando no lo está. La Metadata API y la Options API también usan el almacenamiento en caché de objetos persistentes.

¿Cómo funciona esto?

Este plugin utiliza un WordPress drop-in para ampliar la funcionalidad de la clase WP_Cache. Cuando activas el plugin crea el archivo dropin .../wp-content/object-cache.php. Tras la desactivación, elimina ese archivo y los datos almacenados en caché.

¿Dónde almacena el plugin los datos almacenados en caché?

Está en el directorio wp_content de tu sitio, en el archivo llamado .ht.object-cache.sqlite. El nombre de ese archivo tiene el prefijo .ht. para evitar que tu servidor web permita que se descargue. SQLite también utiliza a veces los archivos denominados .ht.object-cache.sqlite-shm y .ht.object-cache.sqlite-wal, por lo que es posible que veas cualquiera de esos archivos.

En Linux y otros sistemas operativos derivados de UNIX, debes dar al comando ls -a para ver los archivos cuando sus nombres empiecen por punto.

Quiero almacenar mis datos almacenados en caché en un lugar más seguro. ¿Cómo lo hago?

Poner los archivos .sqlite fuera de la raíz de documentos del sitio es una buena práctica de seguridad. Así es como lo puedes hacer. Si defines la constante WP_SQLITE_OBJECT_CACHE_DB_FILE en wp_config.php el plugin la usará para el nombre de ruta del archivo sqlite. Por ejemplo, si wp-config.php contiene esta línea

define( 'WP_SQLITE_OBJECT_CACHE_DB_FILE', '/tmp/mysite-object-cache.sqlite' );

los datos de tu caché de objetos van a la carpeta /tmp en un archivo llamado mysite-object-cache.sqlite.

También puedes definir WP_CACHE_KEY_SALT para que sea una cadena de texto. Continuando con el ejemplo, esta línea

define( 'WP_CACHE_KEY_SALT', 'qrstuv' );

hace que los datos de la caché de objetos vayan a la carpeta /tmp en un archivo llamado mysite-object-cache.qrstuv.sqlite.

A veces recibo errores de tiempo de espera de SQLite. ¿Cómo puedo corregirlos?

Algunos sitios, ocasionalmente, generan mensajes de error similares a este:

Unable to execute statement: database is locked in /var/www/wp-content/object-cache.php:1234

Esto puede suceder si tu servidor coloca los archivos de WordPress en un almacenamiento conectado a la red (es decir, en una unidad de red). Para resolver esto, almacena los datos almacenados en caché en una unidad conectada localmente. Consulta aquí la pregunta sobre el almacenamiento de los datos en un lugar más seguro.

¿Por qué obtengo errores cuando utilizo WP-CLI para administrar mi sitio?

A veces, los comandos WP-CLI emitidos desde un intérprete de comandos se ejecutan con un usuario distinto del servidor web. Este complemento crea uno o más archivos de caché de objetos. Es posible que el servidor web no pueda leer o escribir en un archivo de caché de objetos si ha sido creado por el usuario wp-cli. O al revés.

En Linux, puedes ejecutar tus comandos shell WP-CLI de la siguiente forma: sudo -u www-data wp config list Así te aseguras de que se ejecutan con el mismo usuario que el servidor web.

¿Qué significan las estadísticas?

Por favor, lee esto.

¿Hay algún chiste en todo esto?

P: ¿Cuáles son las dos cosas más difíciles de hacer bien en informática?

  1. Guardar cosas en caché.
  2. Poner nombre a las cosas.
  3. Afrontar los errores de uno en uno.

En serio, el núcleo de WordPress ya ha resuelto, a lo largo de años de desarrollo y millones de sitios, cómo almacenar cosas en caché y nombrarlas. Este plugin simplemente amplía ese mecanismo para hacer que esas cosas sean persistentes.

Tengo otra pregunta

Por favor, busca más preguntas y respuestas aquí. O haz tu pregunta en el foro de soporte.

Reseñas

3 de mayo de 2023 1 respuesta
Been looking all night for a solution... memcached and others are too complicated for Windows. Thank you so much and please keep this plugin updated!!
16 de abril de 2023 1 respuesta
This plugin speeds up your site considerably without the hassle of installing Redis or Memcached. In fact, I think this should be part of WordPress core! 🙂 I've been testing this on a busy site (3000-5000 visitors/day with many logged-in users), and it's doing fine. I used the Redis Object Cache plugin before this one, but I find this one is easier to manage (no Redis installation required) and contain (the cache files are hidden files within your wp-content dir). Thanks to the cache files inside your site's dir, installing this one on all your sites is more manageable. To illustrate: when you have multiple sites, you must manually administer and change the database number with the Redis Object Cache plugin, and it's not a setting in the UI but a config file change. (And: Redis is limited to 16 databases). I don't have hard stats, but the site doesn't feel slower or faster than using Redis for caching. I do think it helps a lot when your server has plenty of spare memory, so Linux's file caching system can cache the SQLite db. I glanced over the code (I'm an experienced software engineer), and the plugin seems well-written. If you're looking for a quick and easy way to speed up your entire site, including the admin area), this is a no-brainer.
4 de abril de 2023
So far I've experimented with object caches using Redis, APC, or static files.However, I couldn't get the results I wanted, such as problems with server requirements and problems after using it for a while.And finally found it! One of my first WP plugins to install.I hope this continues for a long time.
31 de marzo de 2023 2 respuestas
Honestly I was skeptical at first because of the low number of installs, but given the lack of options for object caching on a lot of shared hosting services that I cant control with a lot of client sites I decided to give it a shot on a few. This plugin is amazing, it helped turn a 15 second load on back end page edits into 3-4 seconds on a plugin heavy site running on an overpopulated shared host that I wont name here, but it was honestly awful, one of the worst I've ever used and a surprisingly big name. I was brought in to try and optimize a monster on this occasion and it helped me turn it into some form of a workhorse again for my client, with almost no setup, toggled a checkbox or two and clicked save. This plugin needs more downloads, there are so many sites running on garbage hosting that could use this to make the back end a working environment again. I will be using this on any site where I do not have redis or memcache available from here on out, cheers to the developer, you are an true WP Wizard.
11 de marzo de 2023 1 respuesta
Thanks Ollie for this great plugin! I use this in conjunction with your other plugin Index WP MySQL For Speed and have installed these on quite a lot of websites with great success. Each and every one has increased speed. It is faster and it feels faster and that's all the client cares about 🎉
Leer todas las 11 reseñas

Colaboradores y desarrolladores

«SQLite Object Cache» es un software de código abierto. Las siguientes personas han colaborado con este plugin.

Colaboradores

«SQLite Object Cache» ha sido traducido a 1 idioma local. Gracias a los traductores por sus contribuciones.

Traduce «SQLite Object Cache» a tu idioma.

¿Interesado en el desarrollo?

Revisa el código , echa un vistazo al repositorio SVN o suscríbete al registro de desarrollo por RSS.

Registro de cambios

1.3.2

  • Avoid VACUUM except on cache flush, and do it only with maintenance mode enabled.

1.3.1

  • Busca una caché demasiado grande con una probabilidad de 0,001 en cada página vista, y purgala. Esto funciona con las operaciones WP_Cron desactivadas o demasiado frecuentes.

1.3.0

  • Optimiza wp_cache_get_multiple, utilizando SQL BETWEEN para obtener entradas de caché consecutivas.
  • No caduca las entradas antiguas. En su lugar, controla el tamaño de la caché purgando las entradas modificadas menos recientemente.

1.2.3

  • Sanitiza el valor WP_CACHE_KEY_SALT.
  • Evita utilizar toda la RAM cuando informes sobre muchas estadísticas.

1.2.2

  • Corrige un fallo en la gestión de excepciones.
  • En la visualización del tamaño en el panel Estadísticas, resume los grupos repetitivos de caché de WooCommerce.

1.2.1

  • Implementa wp_cache_flush_runtime() correctamente.

1.2.0

  • Mejor gestión de las excepciones.
  • Almacenamiento más seguro de los archivos de la base de datos.

1.1.1

  • Cambiar de MEMORY a WAL para el modo de diario de SQLite.
  • Implementa algunos ajustes de wp-config.php:

    WP_SQLITE_OBJECT_CACHE_DB_FILE. Nombre de la ruta del archivo sqlite. Por defecto: …/wp-content/.ht.object_cache.sqlite .

    WP_SQLITE_OBJECT_CACHE_TIMEOUT Tiempo de espera de SQLite. Por defecto: 5000 milisegundos.

    WP_SQLITE_OBJECT_CACHE_JOURNAL_MODE Por defecto: ‘WAL’. Valores posibles DELETE | TRUNCATE | PERSIST | MEMORY | WAL | NONE. Consulta https://www.sqlite.org/pragma.html#pragma_journal_mode

1.1.0

  • Aumentar el tiempo de espera de SQLite de 0,5seg a 5,0seg, intentando hacer frente a las raras esperas largas para realizar una operación SQLite. #10.
  • Cambia el modo de diario de SQLite de MEMORIA a WAL intentando reducir la contención entre lectores y escritores.
  • Muestra los tiempos p1 del primer percentil y p99 del percentil 99 en el panel Estadísticas, junto con p5, mediana, media y p95.
  • Añade la configuración de wp-config.php para el tiempo de espera y el modo de diario junto con el nombre de archivo.
  • Prueba con WordPress 5.5, la versión más antigua que no requiere la obsoleta extensión mysql.
  • Cambia el registro de rendimiento de basado en el tiempo a muestreo aleatorio para reducir la sobrecarga.
  • Corrige una condición rara al insertar valores en caché bajo carga en SQLite anterior a la versión 3.24.
  • Muestra la disponibilidad de la serialización igbinary, que ahorra espacio, en el escritorio.

Esta aplicación de SQLite pone a prueba su código de gestión de concurrencias.

1.0.0

  1. Utiliza .ht.object-cache.sqlite para los datos almacenados en caché, a fin de evitar que se descarguen a través del servidor web.
  2. Añade compatibilidad para la constante WP_SQLITE_OBJECT_CACHE_DB_FILE.
  3. Es posible que el archivo de caché sqlite se corrompa si se bloquea un proceso del servidor. Cuando detecta ese tipo de situación, el complemento ahora lo borra y lo reconstruye.

0.1.7

Primera versión