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;
}
-
+
/**