Go to file
Weston Ruter e158ff27de Customizer: Fix scalability performance problem for previewing multidimensional settings.
As the number of multidimensional settings (serialized options and theme mods) increase for a given ID base (e.g. a widget of a certain type), the number of calls to the `multidimensional` methods on `WP_Customize_Setting` increase exponentially, and the time for the preview to refresh grows in time exponentially as well.

To improve performance, this change reduces the number of filters needed to preview the settings off of a multidimensional root from N to 1. This improves performance from `O(n^2)` to `O(n)`, but the linear increase is so low that the performance is essentially `O(1)` in comparison. This is achieved by introducing the concept of an "aggregated multidimensional" setting, where the root value of the multidimensional serialized setting value gets cached in a static array variable shared across all settings.

Also improves performance by only adding preview filters if there is actually a need to do so: there is no need to add a filter if there is an initial value and if there is no posted value for a given setting (if it is not dirty).

Fixes #32103.


git-svn-id: https://develop.svn.wordpress.org/trunk@35007 602fd350-edb4-49c9-b593-d223f7449a82
2015-10-10 09:05:04 +00:00
src Customizer: Fix scalability performance problem for previewing multidimensional settings. 2015-10-10 09:05:04 +00:00
tests Customizer: Fix scalability performance problem for previewing multidimensional settings. 2015-10-10 09:05:04 +00:00
tools/i18n i18n tools: Use https for msgid-bugs-address URLs. 2015-07-27 19:37:13 +00:00
.editorconfig Use HTTPS URLs for codex.wordpress.org. 2015-04-12 21:28:58 +00:00
.gitignore Ignore .DS_Store files. 2015-03-13 18:11:33 +00:00
.jshintrc Update grunt-contrib-jshint to 0.11.0 2015-03-06 21:07:35 +00:00
.travis.yml Add PHP Nightlies to the test suite 2015-10-02 16:50:53 +00:00
Gruntfile.js Build: Fix a filename typo in [34903]. 2015-10-07 12:04:39 +00:00
package.json Build Tools: upgrade grunt-browserify to ~4.0.0 and remove the watch task for browserify, which has its own internal watcher. Run npm install to update. 2015-10-07 00:00:00 +00:00
phpunit.xml.dist Tests: Exclude the oembed/headers.php test file, which was marked as PHP >= 5.3.0 in [34904]. 2015-10-07 12:00:34 +00:00
wp-cli.yml Introduce default wp-cli.yml for core development. 2014-04-30 21:35:18 +00:00
wp-config-sample.php Lightly clean up and improve inline documentation in wp-config-sample.php. 2015-05-10 00:05:30 +00:00
wp-tests-config-sample.php Update wp-tests-config-sample.php to run with WP_DEBUG by default. see #25282. 2013-09-23 16:17:59 +00:00