Deploying to Cloudflare Pages: A Complete Guide
Cloudflare Pages offers one of the best platforms for deploying static sites with global CDN distribution, automatic HTTPS, and seamless GitHub integration. This guide will walk you through everything you need to know.
Why Choose Cloudflare Pages?
Cloudflare Pages stands out from other static hosting platforms with several key advantages:
Performance Benefits
- Global CDN: 200+ data centers worldwide
- Edge optimization: Content served from the nearest location
- HTTP/3 support: Latest protocol for faster connections
- Brotli compression: Better compression than gzip
Developer Experience
- Git integration: Automatic deployments from GitHub/GitLab
- Preview deployments: Every pull request gets a preview URL
- Custom domains: Easy domain management with automatic SSL
- Analytics: Built-in web analytics without tracking scripts
Setting Up Your First Deployment
Prerequisites
- A static site repository on GitHub or GitLab
- A Cloudflare account (free tier available)
Step 1: Connect Your Repository
- Log in to the Cloudflare dashboard
- Navigate to “Pages” in the sidebar
- Click “Create a project”
- Connect your GitHub or GitLab account
- Select your repository
Step 2: Configure Build Settings
Cloudflare Pages supports many frameworks out of the box:
# For Astro projects
Build command: npm run build
Build output directory: dist
# For Next.js
Build command: npm run build && npm run export
Build output directory: out
# For React/Vite
Build command: npm run build
Build output directory: dist
Step 3: Environment Variables
Set up any required environment variables in the Pages dashboard:
NODE_VERSION=18
NPM_VERSION=8
ASTRO_TELEMETRY_DISABLED=1
Advanced Configuration
Custom Build Commands
For complex build processes, you can customize the build pipeline:
# Install dependencies and build
npm ci && npm run build
# Run tests before building
npm run test && npm run build
# Build with specific Node version
node --version && npm run build
Redirects and Rewrites
Create a _redirects file in your build output directory:
# Redirect old URLs
/old-page /new-page 301
# SPA fallback
/* /index.html 200
# API proxy
/api/* https://api.example.com/:splat 200
Headers Configuration
Add custom headers with a _headers file:
/*
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin
/assets/*
Cache-Control: public, max-age=31536000, immutable
Custom Domains
Adding Your Domain
- Go to your Pages project settings
- Click “Custom domains”
- Add your domain name
- Update your DNS records as instructed
DNS Configuration
For apex domains, use CNAME flattening:
example.com CNAME your-site.pages.dev
www.example.com CNAME your-site.pages.dev
Performance Optimization
Image Optimization
Cloudflare automatically optimizes images:
<!-- Automatic WebP conversion and resizing -->
<img src="/image.jpg" alt="Description" loading="lazy">
Caching Strategy
Leverage Cloudflare’s caching with proper headers:
// In your build process
export default {
build: {
rollupOptions: {
output: {
assetFileNames: 'assets/[name].[hash][extname]'
}
}
}
}
Monitoring and Analytics
Web Analytics
Enable Cloudflare Web Analytics for privacy-friendly tracking:
- Go to your domain in Cloudflare dashboard
- Navigate to “Analytics” > “Web Analytics”
- Enable analytics and add the beacon to your site
Performance Monitoring
Monitor your site’s performance with:
- Core Web Vitals tracking
- Real User Monitoring (RUM)
- Speed insights
- Geographic performance data
Troubleshooting Common Issues
Build Failures
Common solutions for build failures:
# Clear npm cache
npm cache clean --force
# Use specific Node version
echo "18" > .nvmrc
# Increase memory limit
NODE_OPTIONS="--max-old-space-size=4096" npm run build
Deployment Issues
Check these common problems:
- Incorrect build output directory
- Missing environment variables
- Node version compatibility
- Build command errors
Best Practices
Security
- Enable security headers
- Use HTTPS redirects
- Implement CSP headers
- Regular dependency updates
Performance
- Optimize images before upload
- Minimize JavaScript bundles
- Use efficient caching strategies
- Leverage Cloudflare’s minification
Monitoring
- Set up uptime monitoring
- Monitor Core Web Vitals
- Track deployment success rates
- Monitor error rates
Conclusion
Cloudflare Pages provides an excellent platform for deploying static sites with enterprise-grade performance and security features. The combination of global CDN, automatic optimizations, and seamless Git integration makes it an ideal choice for modern web projects.
The free tier is generous enough for most personal and small business projects, while the paid plans offer additional features for larger applications.
Start deploying your sites to Cloudflare Pages today and experience the performance benefits of edge computing!
Ready to deploy? Check out the Cloudflare Pages documentation for more advanced configurations and features.