在codeigniter中缓存routes.php文件的任何方法?

时间:2017-12-06 13:10:57

标签: php codeigniter

我正在尝试在CI中添加来自数据库的动态路由。但是在我的表格中添加数据之后我的网站真的很慢。

无论如何要执行routes.php文件?或者无论如何加速我的网站?

注意:我有超过60,000条SEO友好网址的记录。

路由影响我的响应服务器时间,大约4秒。

这是我的代码:

require_once(BASEPATH . 'database/DB' . EXT);
require_once(BASEPATH . 'helpers/url_helper' . EXT);
require_once(BASEPATH . 'helpers/text_helper' . EXT);
$db = &DB();

$query = $db->query('select id,title from news');
$result = $query->result();
foreach ($result as $row) {
    $string = strtolower(str_replace(' ', '-', $row->title));
    $route["funny-news/" . $string] = "news/newsDetails/$row->id";
}

感谢。

修改

newsDetails控制器代码:

public function newsDetails($id)
    {
        $hdata['active'] = "news";
        $result['news'] = $this->mytestdb->getNewsById($id);
        $this->load->view('nheader', $hdata);
        $this->load->view('newsDetails', $result);
        $this->load->view('footer');
    }

2 个答案:

答案 0 :(得分:0)

我的建议是构建自己的子类(MY_Controller)。在控制器中加载数据库并使用file_put_contents将路由直接写入routes文件。

答案 1 :(得分:0)

打开routes.php并将以下行放入

$route['funny-news/(.*)'] = "news/newsDetails/$1";

你的控制器看起来应该是

public function newsDetails($slug)
{
    $hdata['active'] = "news";
    $result['news'] = $this->mytestdb->getNewsBySlug($slug);
    $this->load->view('nheader', $hdata);
    $this->load->view('newsDetails', $result);
    $this->load->view('footer');
}

有一件事 - 您应该在数据库中使用额外的字段作为所需的slug。

可以在PHP function to make slug (URL string)找到一个功能。

使用这种方法,您不需要用不必要的路线填充数据库。