--- less.module	2011-11-19 22:12:58.557173341 -0800
+++ /home/chx/www/drupal/sites/all/modules/less/less.module	2011-11-19 22:13:40.673840150 -0800
@@ -59,18 +59,20 @@ function _less_pre_render($styles) {
   if (empty($lessphp_include)) {
     $lessphp_include = 'lessphp/lessc.inc.php';
   }
-  
-  $less_path = file_default_scheme() . '://less';
-
+  $devel = variable_get('less_devel', FALSE);
+  $less_dir = variable_get('less_dir', '');
   // Flush compiled LESS files if developer mode is enabled
-  if (variable_get('less_devel', FALSE)) {
-    file_unmanaged_delete_recursive($less_path);
-    if (user_access(LESS_PERMISSION) && flood_is_allowed('less_devel_warning', 1)) {
+  if (!$less_dir || $devel) {
+    $less_dir = microtime(TRUE);
+    variable_set('less_dir', $less_dir);
+    if ($devel && user_access(LESS_PERMISSION) && flood_is_allowed('less_devel_warning', 1)) {
       flood_register_event('less_devel_warning');
       drupal_set_message(t('LESS files are being regenerated on every request. Remember to <a href="!url">turn off</a> this feature on production websites.', array("!url" => url('admin/config/development/less'))), 'status');
     }
   }
 
+  $less_path = file_default_scheme() . '://less/' . $less_dir;
+
   foreach ($styles['#items'] as $key => $info) {
     $input_file = $info['data'];
     if (drupal_substr($input_file, -5) == '.less') {
@@ -88,7 +90,7 @@ function _less_pre_render($styles) {
         return;
       }
 
-      $output_file = $css_path . '/' . basename($input_file, '.less');
+      $output_file = $css_path . '/' . $version . basename($input_file, '.less');
       // correct file names of files not following the .css.less naming convention
       if (drupal_substr($output_file, -4) != '.css') {
         $output_file .= '.css';
@@ -149,14 +151,25 @@ function _less_pre_render($styles) {
  */
 function less_flush_caches() {
   if (!drupal_static('less_cron')) {
-    // Delete all generated files.
-    $less_path = file_default_scheme() . '://less';
-    file_unmanaged_delete_recursive($less_path);
+    $less_dir = microtime(TRUE);
+    variable_set('less_dir', $less_dir);
+    mkdir(file_default_scheme() .'://less/' . $less_dir);
   }
   return array();
 }
 
 /**
+ * Implements hook_cron().
+ */
+function less_cron() {
+  foreach (new DirectoryIterator(file_default_scheme() . '://less') as $file) {
+    if (preg_match('|^(\d+)\.\d+$|', $file->getFilename(), $matches) && REQUEST_TIME - $matches[1] > 900) {
+      file_unmanaged_delete_recursive($file->getPathName());
+    }
+  }
+}
+
+/**
  * Implementation of hook_cron_queue_info().
  */
 function less_cron_queue_info() {
