srlemuuur
Gamma
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Si usas wordpress hay plugins que puedes instalar como el Super Cache o el W3 total cache y listo, yo te recomiendo el Super Cache ya que no requiere ninguna configuración a diferencia del W3 total cache que para que funcione bien hay que configurarlo!
No uso wordpress, es todo codigo desde 0.
mi forma de realizar un sistema de cache para un portal que cree, fue la de generar archivos php donde voy guardando en una variable la serializacion de las consultas a la base de datos que hago, y lo que se va guardando ahi son los resultados de dichas consultas, de esta forma se crea el archivo la primera ves y luego se actualiza cada cierto tiempo (que lo configuras), haciendo que la carga se disminuya por que las consultas no los hace a la bd sino los trae del archivo que creaste para "cachearlo".
$cachetime = 7200; //tiempo de cache
$cachefile = "cache/page/".$_GET[page].".page"; //Nombre del archivo
if($isLogged==true) { //esto es para el admin (tendrás que crear una función que te diga si estás logeado)
include("page.php");
$cachethis = false;
}
else if (file_exists($cachefile) && time() - $cachetime < filemtime($cachefile)) { //aquí está la parte del tiempo y la actualización del cache
include($cachefile);
die();
}
else {
include("page.php");
$cachethis = true;
}
}
if(($cachethis==true)) { //valida si hay que crear cache
$HTMLminificado = sanitize_output(ob_get_contents()); //aqui yo comprimo el HTML con una función (s
$fp = fopen($cachefile, 'w');
fwrite($fp,$HTMLminificado);
fclose($fp);
}
function sanitize_output($buffer) {
$search = array(
'/\>[^\S ]+/s', // strip whitespaces after tags, except space
'/[^\S ]+\</s', // strip whitespaces before tags, except space
'/(\s)+/s' // shorten multiple whitespace sequences
);
$replace = array(
'>',
'<',
'\\1'
);
$buffer = preg_replace($search, $replace, $buffer);
return $buffer;
}
El problema principal son las imagenes.
¿Lo veis muy chapuzero?
Para las imagenes puedes ver un servicio cdn que creo hay algunos baratos o alojarlos en un servidor que nunca morira :witless:
Pero no esta nada mal la idea que tienes sobre las imagenes. Creeria que de si haces este tipo de optimizacion, estarias ahorrando mucho consumo y por ende, buenos resultados. :encouragement:
No conozco el servicio, pero precisamente esta mañana me topé este servicio
https://cloudinary.com/users/register/free
Cloudflare te protege el sitio web (tienes que modificar las DNS del dominio) y también incluye caché y protección
-- phpMyAdmin SQL Dump
-- version 3.5.2.2
-- http://www.phpmyadmin.net
--
-- Servidor: 127.0.0.1
-- Tiempo de generación: 08-04-2014 a las 17:33:52
-- Versión del servidor: 5.5.27-log
-- Versión de PHP: 5.4.6
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Base de datos: `bd_laboratorio`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `ejemplo_cache`
--
CREATE TABLE IF NOT EXISTS `ejemplo_cache` (
`id_registro` int(11) NOT NULL AUTO_INCREMENT,
`titulo` varchar(250) NOT NULL,
`contenido` text NOT NULL,
PRIMARY KEY (`id_registro`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
--
-- Volcado de datos para la tabla `ejemplo_cache`
--
INSERT INTO `ejemplo_cache` (`id_registro`, `titulo`, `contenido`) VALUES
(1, 'Titulo 1', 'Contenido del titulo 1'),
(2, 'Titulo 2', 'Contenido del titulo 2');
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
<?php
global $cache;
//carpeta cache
$cache = 'cache';
$resultadoCacheado = false;
$connection = new mysqli('localhost','usuario bd','password bd', 'nombre base de datos'); //aca deben modificar acorde a sus datos de conexion a la BD y el nombre de BD
if ($connection->connect_errno)
{
echo "Fallo al conectar a MySQL: (" . $connection->connect_errno . ") " . $connection->connect_error;
}else{
echo '<strong>Sistema de Cache PHP</strong>';
echo '<br />';
//vemos si existe el archivo
$nombreArchivo = $cache.'/cache_ejemplo_cache.php';
if (!file_exists($nombreArchivo))
{
$sql = $connection->query("select c.* from ejemplo_cache c");
while($rows = mysqli_fetch_assoc($sql))
$content[$rows['id_registro']] = array(
'titulo' => $rows['titulo'],
'contenido' => $rows['contenido'],
);
//cacheamos la primera ves que entramos
cacheando($content, 'ejemplo_cache');
$resultadoCacheado = false;
}else{
require_once($cache.'/cache_ejemplo_cache.php');
$content = unserialize($valor); //la variable $valor se encuentra en al archivo
$resultadoCacheado = true;
}
//impresion del resultado
echo ($resultadoCacheado) ? 'El Vector ha sido Cacheado' : 'El Vector no ha sido Cacheado';
echo '<br />';
print_r($content);
}
//para crear el archivo php
function cacheando($vector, $nombrearchivo)
{
global $cache;
$serialize = serialize($vector);
$contenido = '<?php $valor = \''. $serialize .'\'; ?>';
$rutaArchivo = $cache.'/cache_'.$nombrearchivo.'.php';
crearArchivoPHP($rutaArchivo, $contenido);
}
//para crear los archivos php
function crearArchivoPHP($filename, $contenido)
{
//borramos el archivo
if (is_file($filename))
unlink($filename);
//creamos el archivo
$archivo = fopen($filename, 'w');
//escribimos en el archivo
fwrite($archivo, $contenido);
fclose($archivo);
}
?>
No sé si han cambiado las políticas pero Imgur si no tienes x visitas en una imagen mensual, la eliminan!!
Cada imagen es alojada de forma ilimitada en los servidores de imgur mientras esta sea vista 1 vez cada 6 meses (caso contrario se elimina). No hay un límite en el número de imagenes que cada usuario puede subir aunque el peso máximo de cada una es de 10 Mb y los archivos soportados por este servicio son JPEG, GIF, PNG, APNG, TIFF, BMP, PDF y XCF (GIMP).
Te dejo un ejemplo, es muy cutre pero lo hice ahora para darte una idea a lo que me referia..
1. crea una carpeta en tu pc "ejemplo_cache"
2. dentro de la carpeta "ejemplo_cache" crea otra subcarpeta con el nombre "cache"
3. Crea la tabla "ejemplo_cache" en tu base de datos con la siguiente estructura
Insertar CODE, HTML o PHP:-- phpMyAdmin SQL Dump -- version 3.5.2.2 -- http://www.phpmyadmin.net -- -- Servidor: 127.0.0.1 -- Tiempo de generación: 08-04-2014 a las 17:33:52 -- Versión del servidor: 5.5.27-log -- Versión de PHP: 5.4.6 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -- -- Base de datos: `bd_laboratorio` -- -- -------------------------------------------------------- -- -- Estructura de tabla para la tabla `ejemplo_cache` -- CREATE TABLE IF NOT EXISTS `ejemplo_cache` ( `id_registro` int(11) NOT NULL AUTO_INCREMENT, `titulo` varchar(250) NOT NULL, `contenido` text NOT NULL, PRIMARY KEY (`id_registro`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; -- -- Volcado de datos para la tabla `ejemplo_cache` -- INSERT INTO `ejemplo_cache` (`id_registro`, `titulo`, `contenido`) VALUES (1, 'Titulo 1', 'Contenido del titulo 1'), (2, 'Titulo 2', 'Contenido del titulo 2'); /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
4. crea un archivo index.php con el siguiente contenido
PHP:<?php global $cache; //carpeta cache $cache = 'cache'; $resultadoCacheado = false; $connection = new mysqli('localhost','usuario bd','password bd', 'nombre base de datos'); //aca deben modificar acorde a sus datos de conexion a la BD y el nombre de BD if ($connection->connect_errno) { echo "Fallo al conectar a MySQL: (" . $connection->connect_errno . ") " . $connection->connect_error; }else{ echo '<strong>Sistema de Cache PHP</strong>'; echo '<br />'; //vemos si existe el archivo $nombreArchivo = $cache.'/cache_ejemplo_cache.php'; if (!file_exists($nombreArchivo)) { $sql = $connection->query("select c.* from ejemplo_cache c"); while($rows = mysqli_fetch_assoc($sql)) $content[$rows['id_registro']] = array( 'titulo' => $rows['titulo'], 'contenido' => $rows['contenido'], ); //cacheamos la primera ves que entramos cacheando($content, 'ejemplo_cache'); $resultadoCacheado = false; }else{ require_once($cache.'/cache_ejemplo_cache.php'); $content = unserialize($valor); //la variable $valor se encuentra en al archivo $resultadoCacheado = true; } //impresion del resultado echo ($resultadoCacheado) ? 'El Vector ha sido Cacheado' : 'El Vector no ha sido Cacheado'; echo '<br />'; print_r($content); } //para crear el archivo php function cacheando($vector, $nombrearchivo) { global $cache; $serialize = serialize($vector); $contenido = '<?php $valor = \''. $serialize .'\'; ?>'; $rutaArchivo = $cache.'/cache_'.$nombrearchivo.'.php'; crearArchivoPHP($rutaArchivo, $contenido); } //para crear los archivos php function crearArchivoPHP($filename, $contenido) { //borramos el archivo if (is_file($filename)) unlink($filename); //creamos el archivo $archivo = fopen($filename, 'w'); //escribimos en el archivo fwrite($archivo, $contenido); fclose($archivo); } ?>
Como dije es un ejemplo a lo que me refiero, es una base que puede ser modificada sin problema y agregar mas opciones como la expiracion automatica de los archivos y demas cosas..
Utilizamos cookies y tecnologías similares para los siguientes fines:
¿Aceptas las cookies y estas tecnologías?
Utilizamos cookies y tecnologías similares para los siguientes fines:
¿Aceptas las cookies y estas tecnologías?