The form cache is pretty terrible: - Almost any time a form loads, a bunch of data (emphasis on a bunch if there are options like a country selection) gets serialized and pumped into the form cache. - It's usually optimal to move the cache outside the database, but forms break if a form cache entry disappears before the user submits the form. - After the form is submitted, the application has to load the form cache data back out, unserialize it, and compare the known, provided form against the submitted data.
Instead, it could work one of these ways, at least for POST forms: - Easy: Serialize and include the "form cache" data as a hidden field. Add one more hidden field that's an HMAC of the data and site's secret/salt, forming a signature. When the form gets submitted, validate the signature on the data. If it matches, then use the data as before. - Harder but lighter weight: Add capability tokens (mini signatures) to each option or validation requirement in a form. On submission, validate those signatures. This would remove the need to compare the submitted form against options provided.
Of course, I would roll this into Drupal or Pressflow following development in Backdrop, but I feel like this might be a nice place to start. The big upside for the casual user is more performance (no server-side tracking) with less to configure (the cache bin for forms).
Recent comments
@yorkshirepudding, In the end I fixed it by deleting the config/active folder contents, copying the config/staging/ files into config/active, importing the database again and clearing the caches...
Importing the staged config throws an error: another field with the same name already exists
Thanks, I have to go out now, I will try later on and report back
Importing the staged config throws an error: another field with the same name already exists
Hi Francis. Yes, what config do you have in staging for it? You might have configs like: field.field.field_video_embed field.instance.node.page....
Importing the staged config throws an error: another field with the same name already exists