Hosting verde reduz impacto ambiental:
Hosting verde significa:
// Verificar se site usa hosting verde
fetch('https://api.thegreenwebfoundation.org/greencheck/example.com')
.then(res => res.json())
.then(data => {
if (data.green) {
console.log('Site usa hosting verde!');
}
});
// Escolher região próxima aos usuários
// Reduz latência e energia de transmissão
const region = getUserRegion(); // baseado em geolocalização
const server = selectServer(region);
# nginx.conf - otimizações
# Compressão
gzip on;
gzip_types text/plain text/css application/json;
# Cache
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
// Processar no edge (mais próximo do usuário)
// Reduz latência e energia
export default {
async fetch(request) {
// Processar no edge
const response = await processRequest(request);
return response;
}
};
# Cache longo para recursos estáticos
Cache-Control: public, max-age=31536000, immutable
// Cache no cliente reduz requisições
self.addEventListener('fetch', (event) => {
event.respondWith(
caches.match(event.request).then((response) => {
return response || fetch(event.request);
})
);
});
<!-- Usar CDN para recursos estáticos -->
<!-- Reduz carga no servidor original -->
<link rel="stylesheet" href="https://cdn.example.com/css/app.css">
# docker-compose.yml
# Escalar apenas quando necessário
services:
app:
deploy:
replicas: 2
resources:
limits:
cpus: '0.5'
memory: 512M
// Escalar baseado em demanda
// Reduz recursos quando não necessário
const autoScale = {
minInstances: 1,
maxInstances: 10,
targetCPU: 70
};
// Serverless - paga apenas pelo uso
// Reduz recursos ociosos
export const handler = async (event) => {
// Processar apenas quando necessário
return processRequest(event);
};
// Monitorar uso de recursos
const metrics = {
cpu: getCPUUsage(),
memory: getMemoryUsage(),
network: getNetworkUsage()
};
// Enviar para monitoramento
sendMetrics(metrics);
// Calcular pegada de carbono
function calculateCarbonFootprint(requests, dataTransfer) {
// Fórmula simplificada
const energyPerRequest = 0.001; // kWh
const energyPerMB = 0.0001; // kWh
const totalEnergy =
(requests * energyPerRequest) +
(dataTransfer * energyPerMB);
const carbonFootprint = totalEnergy * 0.5; // kg CO2/kWh
return carbonFootprint;
}
# vercel.json
{
"buildCommand": "npm run build",
"outputDirectory": "dist",
"regions": ["gru1"], // Região mais próxima
"headers": [
{
"source": "/(.*)",
"headers": [
{
"key": "Cache-Control",
"value": "public, max-age=31536000, immutable"
}
]
}
]
}
// edge function - processar no edge
export default async function handler(request) {
// Processar no edge (mais próximo do usuário)
const response = await processRequest(request);
// Adicionar headers de cache
response.headers.set('Cache-Control', 'public, max-age=3600');
return response;
}