diff --git a/README.md b/README.md index 58bffc0..8495c73 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,12 @@ -# render_boost -Speedup page delivery by caching render based on checksum. +# Render Boost -This module require kernel patch. -``` -cd document_root/sites/all/modules/ -git clone https://github.com/itpatrol/render_boost.git -cd ../../../ -cat sites/all/modules/render_boost/render_boost.patch| patch -p1 +Speed-up page delivery by caching render based on checksum. + +## Installation + +This module requires core patch: + +```shell +git clone https://github.com/itpatrol/render_boost.git sites/all/modules/ +patch -p1 < sites/all/modules/render_boost/render_boost.patch ``` diff --git a/render_boost.install b/render_boost.install index 98eaacb..ea50e9d 100644 --- a/render_boost.install +++ b/render_boost.install @@ -1,7 +1,7 @@ Render boost called: ' . $_render_boost_devel['count'] . ' + print '
Render boost called: ' . $_render_boost_devel['count'] . ' checksum check: ' . round($_render_boost_devel['checksum'] * 1000) . 'ms cache store: ' . round($_render_boost_devel['store'] * 1000) . 'ms cache get: ' . round($_render_boost_devel['get'] * 1000) . 'ms Total: ' . round(($_render_boost_devel['checksum'] + $_render_boost_devel['store'] + $_render_boost_devel['get']) * 1000) . 'ms
'; + } } /** @@ -80,68 +79,10 @@ function render_boost_checksum($element) { $_render_boost_devel['count']++; $serialize = serialize($element); - $checksum = md5($serialize); $_render_boost_devel['checksum'] = $_render_boost_devel['checksum'] + (render_boost_microtime_float() - $now); - return $checksum; -} - -function render_boost_sanitize_form(&$element){ - static $deep; - - if(!$deep){ - $deep = 1; - }else{ - $deep ++; - } - - if($deep > 3){ - return; - } - - if(is_array($element)){ - if (isset($element['form_token'])) { - unset($element['form_token']); - } - if (isset($element['form_build_id'])) { - unset($element['form_build_id']); - } - if (isset($element['#build_id'])) { - unset($element['#build_id']); - } - if (isset($element['date'])) { - unset($element['date']); - } - if (isset($element['#attached'])) { - unset($element['#attached']); - } - foreach($element as $key => $value){ - render_boost_sanitize_form($value); - $element[$key] = $value; - } - } -} - -function render_boost_sanitize_objects(&$item, $key){ - if(is_object($item)){ - $item = render_boost_get_object_values($item); - if(isset($item['created'])){ - unset($item['created']); - } - } -} -/** - * Get first level properties from object. - */ -function render_boost_get_object_values($object) { - $result = array(); - foreach ($object as $key => $val) { - if (is_string($val) || is_bool($val) || is_numeric($val)) { - $result[$key] = $val; - } - } - return $result; + return $checksum; } /** @@ -155,82 +96,63 @@ function render_boost_store_cache($checksum, $data) { global $_render_boost_devel; $now = render_boost_microtime_float(); // Construct the filepath where JS translation files are stored. - $config = variable_get('render_boost_settings'); + $config = render_boost_settings(); - $expire_after = $config['expire'] ? $config['expire'] : 3600; - $expire = REQUEST_TIME + $expire_after ; - cache_set($checksum, $data, 'cache_render', $expire); + cache_set($checksum, $data, 'cache_render', REQUEST_TIME + $config['expire']); $_render_boost_devel['store'] = $_render_boost_devel['store'] + (render_boost_microtime_float() - $now); } -function render_boost_store_checksums($checksum = NULL){ - static $checksums; - - if(!$checksums){ - $checksums = array(); - } - - if($checksum){ +function render_boost_store_checksums($checksum = NULL) { + static $checksums = array(); + + if (isset($checksum)) { $checksums[] = $checksum; } + return $checksums; } /** * Get cache by checksum. */ function render_boost_get_cache($checksum) { - global $_render_boost_devel; - $now = render_boost_microtime_float(); - $checksums = &drupal_static('render_boost_get_cache'); + $now = render_boost_microtime_float(); + $checksums =& drupal_static(__FUNCTION__, array()); if (isset($checksums[$checksum])) { return $checksums[$checksum]; } - $return = FALSE; + $return = ''; + $cache = cache_get($checksum, 'cache_render'); - $config = variable_get('render_boost_settings'); + if (!empty($cache->data)) { + render_boost_add_assets($cache->data); - if ($cache = cache_get($checksum, 'cache_render')) { - - if(isset($cache->data['js'])){ - foreach($cache->data['js'] as $key => $val){ - drupal_add_js($key, $val['type']); - } - } - if(isset($cache->data['css'])){ - foreach($cache->data['css'] as $key => $val){ - drupal_add_css($key, $val); - } - } - if(isset($cache->data['settings'])){ - foreach($cache->data['settings'] as $key => $val){ - drupal_add_js($val, 'setting'); - } - } - - $return = '' . $cache->data['output'] . ''; + $return = "{$cache->data['output']}"; } + $checksums[$checksum] = $return; + render_boost_store_checksums($checksum); $_render_boost_devel['get'] = $_render_boost_devel['get'] + (render_boost_microtime_float() - $now); - return $return ; + return $return; } /** * Process form states and attachments fo cached data. */ function render_boost_enable_forms_states_attaches($elements) { - if (!empty($elements['#states'])) { +// if (!empty($elements['#states'])) { // drupal_process_states($elements); - } - - if (!empty($elements['#attached'])) { +// } +// +// if (!empty($elements['#attached'])) { // drupal_process_attached($elements); - } +// } + foreach ($elements as $key => $val) { if (is_array($val)) { render_boost_enable_forms_states_attaches($val); @@ -242,20 +164,18 @@ function render_boost_enable_forms_states_attaches($elements) { * Main function. Replace drupal_render function. */ function render_boost_drupal_render(&$elements) { - - $output = render_boost_render($elements); preg_match_all('/', -+ ); ++ ++ return array('#markup' => ""); + } + } ++ + return $form; } - + /**