Variables & Constants
I’ve seen the docs on how to set variables within subroutines but is there a way to define constants that can be read across the subroutines?
Seems wasteful to be setting up variables on every vcl_recv when the value is always going to be the same.
-
@drwilco we have a few:
- The threshold of users allowed on to the site. Generally, this is left set to 100%, but can be lowered to limit traffic in event of exceptionally-high origin load.
- Maintenance page toggle. Used to mask the system when updates requiring downtime are made.
In both instances, we will adjust the values in VCL and activate the new version.
-
Ah, good points. We (SEs and other VCL users at Fastly) have been using Edge Dictionaries for that. Basically we will have a
settings
table, and have various keys for knobs to tweak. And if used a lot, we'll load the values into local variables, especially if there's conversion.With Edge Dictionaries you get the ability to do a change to a value with a single API call. And now that you can batch updates, you can even change multiple values with a single API call, and forego having to clone & activate.
Other than datatype, there's no real advantage over using dictionaries to constants. Dictionaries allow for flexibility and a more general usecase, whereas constants would require us to know which variables have to be there, which complicates our controlplane a lot. Edge Dictionaries can cover missing "variables", by using table lookups with a supplied default value.
Please sign in to leave a comment.
Comments
3 comments