protected function getHttpResponse($request = null, $response = null)
    {
        // Response cache content
        $is_cache = false;
        $cache_type = null;
        $page_cache_config = Lb::app()->getPageCacheConfig();
        $routeInfo = $this->route_info;
        if (isset($page_cache_config['controllers'][$routeInfo['controller']][$routeInfo['action']])) {
            $is_cache = true;
            $cache_type = $page_cache_config['controllers'][$routeInfo['controller']][$routeInfo['action']];
            if ($page_cache = $this->getPageCache($cache_type)) {
                return $page_cache;
            }
        }

        // Route
        $hproseConfig = Lb::app()->getHproseConfig();
        $thriftProviderConfig = Lb::app()->getThriftProviderConfig();
        if (!empty($thriftProviderConfig[$routeInfo['controller']][$routeInfo['action']])) {
            Route::thrift($routeInfo);
        } elseif (!empty($hproseConfig[$routeInfo['controller']][$routeInfo['action']])) {
            Route::hprose($routeInfo, $request, $response);
        } else {
            ob_start();
            Route::runWebAction($routeInfo, $request, $response);
            $page_content = ob_get_contents();
            ob_end_clean();
            $page_content = $this->compressPage($page_content);
            $is_cache && $this->setPageCache($cache_type, $page_content);
            return $page_content;
        }

        return '';
    }