First AJAX request is working very well, next takes too much time I'm working on ajaxing my site, for a long time now.
I found a method that's working for me, but only the first AJAX request is working the right way; the next request takes at least twice the time.  

I thought, that it behaves like that because I load the whole scripts from a template file with every request. I removed the print $scripts from that template file; the result is that the requests take the same time took before.

This is the content of the files I am using.

my_ajax.module

function my_ajax_init() {
  drupal_add_js(drupal_get_path('module', 'my_ajax') . '/my_ajax.js');
}

function acquia_slate_preprocess_page(&amp;$vars, $hook) {
  if (isset($_GET['ajax']) &amp;&amp; $_GET['ajax'] == 1) {
    $vars['template_files'][] = 'page-ajax';
  }
}


my_ajax.js



Drupal.behaviors.my_ajax = function (context) {
  $('#content-group-inner a').live('click', function (e) {
    $('#content-group-inner a').not('.my_ajax-processed').addClass('my_ajax-processed');
    var url = $(this).attr('href');
    $('#content-region-inner').empty().html('&lt;img src="ajax-loader.gif" style="margin-left:50%;"/&gt;');
    $('#content-region-inner').load(url, 'ajax=1', function () {
      Drupal.attachBehaviors('#content-region-inner');
    });

    return false;
  });
};


page-ajax.tpl.php

&lt;?php print $styles; ?&gt;
&lt;?php print $setting_styles; ?&gt;
&lt;!--[if IE 8]&gt;
  &lt;?php print $ie8_styles; ?&gt;
&lt;![endif]--&gt;
&lt;!--[if IE 7]&gt;
  &lt;?php print $ie7_styles; ?&gt;
&lt;![endif]--&gt;
&lt;!--[if lte IE 6]&gt;
  &lt;?php print $ie6_styles; ?&gt;
&lt;![endif]--&gt;
&lt;?php if ($local_styles): ?&gt;
  &lt;?php print $local_styles; ?&gt;
&lt;?php endif; ?&gt;
&lt;title&gt;&lt;?php print $head_title; ?&gt;&lt;/title&gt;

&lt;?php if (arg(0) != 'admin') { ?&gt;
  &lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"&gt;&lt;/script&gt;
  &lt;script type="text/javascript"&gt;
    var $jq = jQuery.noConflict();
  &lt;/script&gt;
&lt;?php } ?&gt;
&lt;?php  print $scripts; ?&gt;
&lt;a name="main-content-area" id="main-content-area"&gt;&lt;/a&gt;
&lt;?php print theme('grid_block', $tabs, 'content-tabs'); ?&gt;
&lt;div id="content-inner" class="content-inner block"&gt;
  &lt;div id="content-inner-inner" class="content-inner-inner inner clearfix"&gt;
    &lt;?php if ($title): ?&gt;
      &lt;h1 class="title"&gt;&lt;?php print $title; ?&gt;&lt;/h1&gt;
    &lt;?php endif; ?&gt;
    &lt;?php if ($content): ?&gt;
      &lt;div id="content-content" class="content-content"&gt;
        &lt;?php ?&gt;
        &lt;?php print $content; ?&gt;
        &lt;?php print $feed_icons; ?&gt;
      &lt;/div&gt;&lt;!-- /content-content --&gt;
    &lt;?php endif; ?&gt;
  &lt;/div&gt;&lt;!-- /content-inner-inner --&gt;
&lt;/div&gt;&lt;!-- /content-inner --&gt;
&lt;?php print $closure; ?&gt;
I found a solution that's working for me.
I just changed that:

$('#content-region-inner').load(url, 'ajax=1', function () {
      Drupal.attachBehaviors('#content-region-inner');


into that:

var result = $('#content-region-inner:not(.my_ajax-processed)', context)
    .load(url,'ajax=1',function() {
               Drupal.attachBehaviors(result);  


When using that, Drupal only fires up Drupal.attachBehaviors() once a time, no matter how much requests you do.

I hope this is working for you, too