Excellent question! You got it right!
Short Answer: You don’t have to worry about migrating a site from development to production. The markup will generated anyways.
Let me break it down for you and explain how this works from the beginning:
1- The plugin does a lot of data processing when you install and activate it for the first time. This to -prepare itself to- generate the schema.org markup output automatically for you.
2- When a post got visited (or curled by search engines) for the first time after installing the plugin, the markup will be generated for that specific post.
3- To avoid regenerating the markup output every time a post is visited (which means load on server) the plugin saves the final generated markup in post meta, this is the field with key =”_schema_json“.
4- Now, if a page got visited again (the second visit), the plugin can pull/deliver the markup so fast, and with no extra overhead.
5- Every specific period of time (daily), the plugin will flush the saved markup data, so it will -again- be regenerated on the first next visit to that specific post. Why? because there are a few functions should run to check if there is anything changes happened (example: a new comment has been published), so the plugin will update everything on daily bases to keep your schema.org markup output valid and up-to-date.
The Schema plugin regenerates the output code on different occasions ( only when it makes sense), for example:
– Save plugin settings.
– Enable the plugin on a new post type.
– Update an old post.
– After a specific period of time (mostly daily)
– *This reminds me that maybe I should add a way to flush it when a comment has been approved!
When any of the above mentioned scenarios happen, the plugin will flush the old data to get fresh one.