Loading static content from a cookieless subdomain
Previous article Next articleMinimize your HTTP requests generating your CMS Made Simple-powered website by loading static content from a cookieless subdomain.
I investigated and have setup this method using my own websites and at my web host using cPanel. It is of course also possible at other platforms but I did not test and describe it here...
In my tutorials I use "website.com" as the default domain name in text and code.
It seems obvious, but it does bear repeating! Change this to *your* domain name!
How to use
1. Create subdomain
In cPanel, open in the "Domains" section the "Subdomains" button.
Here you create a new subdomain "static" of your main domain.
Important! Point this subdomain to the folder where your main website is stored!
At most websites this will be: public_html.
But if your website is stored in a subfolder you need to add something like public_html/subfolder depending your settings.
After clicking the "Create" button the subdomain will be installed at your server.
This subdomain is an alias of the main domain without changing DNS (a/cname) settings.
2. Enable SSL with Let's Encrypt (optional)
In the "Security" section of the main cPanel page, you open the "Let's Encrypt™ SSL" page.
Issue a new certificate for the subdomain "static.website.com" you just created.
3. Change CMSMS config file
Add to the bottom of your config.php file (don't forget the change the file permission to not-writable afterwards)
$config['uploads_url'] = 'https://static.website.com/uploads';
// Change path for templates and stylesheets
$config['public_cache_url'] = 'https://static.website.com/tmp/cache';
// I needed to set this line, it might be you don't need it...
$config['ssl_css_url'] = 'https://static.website.com/tmp/cache';
4. Update analytics code
Whether you use Matomo (before Piwik) or Google Analytics you need to update the code to prevent setting cookies for all subdomains. By default the cookie will be installed for ".website.com" (note the dot!) or "*.website.com". It has to be changed, so it only sets cookies for the current domain "website.com".
4.1 Example Matomo (Piwik)
_paq.push(["setCookieDomain", "*.website.com"]);
_paq.push(["setDomains", ["*.website.com"]]);
...
Remove "*." twice.
_paq.push(["setCookieDomain", "website.com"]);
_paq.push(["setDomains", ["website.com"]]);
...
4.2 Example Google Analytics
_gaq.push(['_setDomainName', '.website.com']);
...
Remove "." once.
_gaq.push(['_setDomainName', 'website.com']);
...
5. Update paths in the (core) templates and stylesheets
The theme and content files of your website are (mostly) stored in the uploads and/or assets folders. In example https://www.website.com/uploads/images/foo.jpg. Change the paths to https://static.website.com/uploads/images/foo.jpg. No need to move the files!
6. Update path in CGSmartImage
Do you use the CGSmartImage module at your site? Simply change the paths by changing these settings in the "General" tab.
1. Image Url Prefix: https://static.website.com/uploads/_CGSmartImage
2. Does the URL above acount for the cache path? Yes
7. Done!
These are all the steps you need to do!
When I use PingDom speedtest I can see at my website 73% of the HTTP requests are now done from the cookieless domain!
The website has certainly become faster by doing this!!!
Working example
Comment Form
ReviewManager
ReviewManager
0 Comments
No comments yet...