Goal
To review how effective the cache layer is, you may want to check the “Hit Ratio” of the content it is serving.
A busy read-only site with its cache preferences properly configured can be seen to serve percentages in the high 90’s; while if you see a cache ratio down below 60%, the server is probably working pretty hard, and some things can be done - either at the app level, of just in the Response-Headers, to improve cache-ability and responsiveness.
Assumptions
You will need:
- A Platform.sh plan with managed Fastly cache enabled. This usually means an “Enterprise Dedicated” plan.
- Read access to your hosting server - the ability to ssh in and read a file there.
This is best done by installing and using theplatform
CLI tool, though plainssh
work as well. - Access to the
curl
tool. if you don’t have it installed locally, you can use it when ssh-ed in to your instance.
Challenge
For managed-CDN plans, Platform.sh looks after your Fastly subscriptions. Which is great, because cache management is hard. But this does mean that you don’t get direct access to some of the reporting tools that Fastly provides.
While you may not get dashboard access, you do get to use the Fastly API with an access token that’s been attached to your account.
Steps
1. SSH in to your production instance
platform ssh --environment=production
2. Retrieve your API token
This will have been added to your production instance, conventionally in the location
/mnt/shared/fastly_tokens.txt
$ cat /mnt/shared/fastly_tokens.txt
This should return something like:
Service: myprojectname
Service ID: C8L8ykr4PCC65vQ8TK97td
API Token: 74919c95e59ec799bc82641811e4e3b4
So, save that as variables:
$ FASTLY_SERVICE_ID="C8L8ykr4PCC65vQ8TK97td"
$ FASTLY_API_TOKEN="74919c95e59ec799bc82641811e4e3b4"
3. Use the Fastly API to ask for your statistics
Historical stats can be retrieved from the /stats
endpoint
curl "https://api.fastly.com/stats/service/${FASTLY_SERVICE_ID}/field/hit_ratio?from=2+days+ago" \
-XGET \
-H "Fastly-Key: ${FASTLY_API_TOKEN}" \
-H "Accept: Application/json" \
-k
4. Check the result
It’s machine-readable, not so much human-readable, but:
Hopefully you’ll see something like:
{
"msg" : null,
"status" : "success",
"data" : [
{
"service_id" : "C8L8ykr4PCC65vQ8TK97td",
"hit_ratio" : 0.818625522455654,
"start_time" : 1589846900
}
],
"meta" : {
"to" : "2020-05-22 12:21:00 UTC",
"by" : "day",
"from" : "2020-05-24 12:21:00 UTC",
"region" : "all"
}
}
the hit_ratio
there indicates that 81% of all requests were cacheable, and being returned by the CDN.
Conclusion
Platform.sh plans with managed Fastly CDN accounts do provide you access to an amount of management options, but you have to work through the API to get at them.
This example gives you the recent “hit ratio”, but there are other stats available also, that can be retrieved in a similar way.
See also How to flush the Fastly Cache