From cdb15f3834b3c8497f1a63aa6110ac9033242d57 Mon Sep 17 00:00:00 2001 From: Sergii Bondarenko Date: Wed, 2 Mar 2016 00:28:47 +0200 Subject: [PATCH 1/2] Fix notices and CS, improved logic --- README.md | 18 +-- render_boost.install | 3 +- render_boost.module | 334 ++++++++++++++++++------------------------- render_boost.patch | 38 ++--- 4 files changed, 174 insertions(+), 219 deletions(-) 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; } - + /** From e69c696298e668535a1c642bb4ae3753a8afd090 Mon Sep 17 00:00:00 2001 From: btopro Date: Tue, 22 Mar 2016 16:26:56 -0400 Subject: [PATCH 2/2] more notice squashing for debug --- render_boost.module | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/render_boost.module b/render_boost.module index b1424fa..6f81361 100644 --- a/render_boost.module +++ b/render_boost.module @@ -9,15 +9,13 @@ */ function render_boost_boot() { $config = render_boost_settings(); - + global $_render_boost_devel; + $_render_boost_devel['count'] = 0; + $_render_boost_devel['checksum'] = 0; + $_render_boost_devel['get'] = 0; + $_render_boost_devel['store'] = 0; if ($config['enable'] && $config['debug']) { // Init statistics data. - global $_render_boost_devel; - $_render_boost_devel['count'] = 0; - $_render_boost_devel['checksum'] = 0; - $_render_boost_devel['get'] = 0; - $_render_boost_devel['store'] = 0; - drupal_register_shutdown_function('render_boost_shutdown'); } } @@ -80,7 +78,7 @@ function render_boost_checksum($element) { $serialize = serialize($element); $checksum = md5($serialize); - $_render_boost_devel['checksum'] = $_render_boost_devel['checksum'] + (render_boost_microtime_float() - $now); + $_render_boost_devel['checksum'] += (render_boost_microtime_float() - $now); return $checksum; } @@ -136,7 +134,7 @@ function render_boost_get_cache($checksum) { $checksums[$checksum] = $return; render_boost_store_checksums($checksum); - $_render_boost_devel['get'] = $_render_boost_devel['get'] + (render_boost_microtime_float() - $now); + $_render_boost_devel['get'] += (render_boost_microtime_float() - $now); return $return; }