diff --git a/plugins/views_plugin_display.inc b/plugins/views_plugin_display.inc index 3c47037..a21e258 100644 --- a/plugins/views_plugin_display.inc +++ b/plugins/views_plugin_display.inc @@ -39,7 +39,23 @@ class views_plugin_display extends views_plugin { unset($options['defaults']); } - $this->unpack_options($this->options, $options); + // Cache for unpack_options. + static $unpack_options = array(); + $cid = 'unpack_options:' . md5(serialize(array($this->options, $options))); + if (empty($unpack_options[$cid])) { + $cache = views_cache_get($cid, TRUE); + if (!empty($cache->data)) { + $this->options = $cache->data; + } + else { + $this->unpack_options($this->options, $options); + views_cache_set($cid, $this->options, TRUE); + } + $unpack_options[$cid] = $this->options; + } + else { + $this->options = $unpack_options[$cid]; + } } function destroy() {