I'd like to better understand some request settings. Namely, Force Miss, Force SSL, Bypass Busy-Wait, Timer Support


#1

The Bypass Busy-Wait option works best in a situation where there is mutual shielding often resulting from custom vcl.
How it works:
Single Cache Node/Datacenter
When a request hits a cache node and the object does not exist the request then goes to the origin. In the cache node a busy-wait object is created. Thus if other requests for the same object hit the cache node they too will wait for the object to be returned from the origin. Once it is returned, all requests receive the cache object.
Two Cache Node/Datacenter
In a mutual shielding scenario, the two datacenters will act as peers. A request hits datacenter1, the busy object is created, and it will go to datacenter2 for the object. If the same request were to hit datacenter2, the busy object is created, and it would go to datacenter1 for the object. This situation would create a dead lock. As a prevention, there is the Ignore Busy-Wait flag seen as ‘Bypass Busy-Wait’. This setting would force the request to ignore the busy-wait object and go to the origin. Normally, a condition is added to Bypass Busy-Wait on just one datacenter. Otherwise, you can set yourself up for all requests on both datacenters to bypass the cache and hit the origin.
The X-Timer Support is more of a legacy setting not often used. The X-Timer is now apart of the master vcl showing the response time from the backend. If the request is cache-type = HIT, then the X-TIMER is unset.
Force Miss is somewhat a legacy setting as well. This setting will purge to one machine and get request. Other cache nodes will have an older version of the cached object.
Alternate solutions depending on your end goal may be better suited to your setup:
With shielding, at best, it will update one POP. If you want to refresh the object, using the API -Purge function will help to accomplish this goal:
http://docs.fastly.com/api/purge. If you want to bypass the object, then you may want to return (pass) in the Action field.
Force SSL force unencrypted requests over to SSL. It works by returning a 301 Moved Permanently response to any unencrypted request, which redirects to the SSL equivalent. We have a document show how one could set this up: http://docs.fastly.com/guides/21844521/22294207