Skip to content

Commit

Permalink
速度改善のための修正
Browse files Browse the repository at this point in the history
・何度も同じ条件でデータ取得しないように修正
・余計なデータを取得しないように修正
  • Loading branch information
s-nakajima committed May 7, 2018
1 parent a2de27a commit 06e9234
Show file tree
Hide file tree
Showing 3 changed files with 88 additions and 49 deletions.
101 changes: 75 additions & 26 deletions Model/Box.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,13 @@ class Box extends BoxesAppModel {
*/
const TYPE_WITH_PAGE = '4';

/**
* ページで共通のものであれば、取得しないようにキャッシュする
*
* @var bool
*/
private $__cacheBoxWithFrame = [];

//The Associations below have been created with all possible keys, those that are not needed can be removed

/**
Expand Down Expand Up @@ -98,33 +105,13 @@ public function getBoxWithFrame($pageContainerId) {
$this->loadModels([
'BoxesPageContainer' => 'Boxes.BoxesPageContainer',
'Frame' => 'Frames.Frame',
'Room' => 'Rooms.Room',
'RoomsLanguage' => 'Rooms.RoomsLanguage',
]);

$this->BoxesPageContainer->bindModel(array(
'belongsTo' => array(
'Room' => array(
'className' => 'Rooms.Room',
//'fields' => array('id', 'name'),
'foreignKey' => false,
'type' => 'LEFT',
'conditions' => array(
'Room.id' . ' = ' . 'Box.room_id',
),
),
'RoomsLanguage' => array(
'className' => 'Rooms.RoomsLanguage',
'fields' => array('id', 'name'),
'foreignKey' => false,
'type' => 'LEFT',
'conditions' => array(
'RoomsLanguage.room_id' . ' = ' . 'Box.room_id',
'RoomsLanguage.language_id' => Current::read('Language.id', '0'),
),
),
)
), false);
$this->BoxesPageContainer->Room->useDbConfig = $this->BoxesPageContainer->useDbConfig;
$this->BoxesPageContainer->RoomsLanguage->useDbConfig = $this->BoxesPageContainer->useDbConfig;
if (isset($this->__cacheBoxWithFrame[$pageContainerId])) {
return $this->__cacheBoxWithFrame[$pageContainerId];
}

$this->BoxesPageContainer->unbindModel(array(
'belongsTo' => array(
Expand All @@ -133,10 +120,71 @@ public function getBoxWithFrame($pageContainerId) {
), true);

$query = array(
'recursive' => 0,
'recursive' => -1,
'fields' => [
$this->BoxesPageContainer->alias . '.id',
$this->BoxesPageContainer->alias . '.page_container_id',
$this->BoxesPageContainer->alias . '.page_id',
$this->BoxesPageContainer->alias . '.container_type',
$this->BoxesPageContainer->alias . '.box_id',
$this->BoxesPageContainer->alias . '.is_published',
$this->BoxesPageContainer->alias . '.weight',
$this->BoxesPageContainer->Box->alias . '.id',
$this->BoxesPageContainer->Box->alias . '.container_id',
$this->BoxesPageContainer->Box->alias . '.type',
$this->BoxesPageContainer->Box->alias . '.space_id',
$this->BoxesPageContainer->Box->alias . '.room_id',
$this->BoxesPageContainer->Box->alias . '.page_id',
$this->BoxesPageContainer->Box->alias . '.container_type',
$this->BoxesPageContainer->Box->alias . '.weight',
$this->Room->alias . '.id',
$this->Room->alias . '.space_id',
$this->Room->alias . '.page_id_top',
$this->Room->alias . '.parent_id',
$this->Room->alias . '.lft',
$this->Room->alias . '.rght',
$this->Room->alias . '.active',
$this->Room->alias . '.in_draft',
$this->Room->alias . '.default_role_key',
$this->Room->alias . '.need_approval',
$this->Room->alias . '.default_participation',
$this->Room->alias . '.page_layout_permitted',
$this->Room->alias . '.theme',
$this->RoomsLanguage->alias . '.id',
$this->RoomsLanguage->alias . '.name',
],
'conditions' => array(
$this->BoxesPageContainer->alias . '.page_container_id' => $pageContainerId,
),
'joins' => [
[
'type' => 'INNER',
'table' => $this->BoxesPageContainer->Box->table,
'alias' => $this->BoxesPageContainer->Box->alias,
'conditions' => [
$this->BoxesPageContainer->Box->alias . '.id' . '=' .
$this->BoxesPageContainer->alias . '.box_id',
],
],
[
'type' => 'INNER',
'table' => $this->Room->table,
'alias' => $this->Room->alias,
'conditions' => [
$this->BoxesPageContainer->Box->alias . '.room_id' . '=' .
$this->Room->alias . '.id',
],
],
[
'type' => 'LEFT',
'table' => $this->RoomsLanguage->table,
'alias' => $this->RoomsLanguage->alias,
'conditions' => [
$this->Room->alias . '.id' . '=' .
$this->RoomsLanguage->alias . '.room_id',
],
],
],
'order' => $this->BoxesPageContainer->alias . '.weight',
);
if (! Current::isSettingMode()) {
Expand All @@ -149,6 +197,7 @@ public function getBoxWithFrame($pageContainerId) {
$boxes[$i] = $box;
}

$this->__cacheBoxWithFrame[$pageContainerId] = $boxes;
return $boxes;
}

Expand Down
16 changes: 13 additions & 3 deletions Model/BoxesPageContainer.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,22 +34,32 @@ class BoxesPageContainer extends BoxesAppModel {
'PageContainer' => array(
'className' => 'Pages.PageContainer',
'foreignKey' => 'page_container_id',
'type' => 'INNER',
'conditions' => '',
'fields' => '',
'fields' => [
'id', 'page_id', 'container_type', 'is_published', 'is_configured',
],
'order' => ''
),
'Page' => array(
'className' => 'Pages.Page',
'foreignKey' => 'page_id',
'type' => 'INNER',
'conditions' => '',
'fields' => '',
'fields' => [
'id', 'room_id', 'root_id', 'parent_id', 'lft', 'rght',
'permalink', 'slug', 'is_container_fluid', 'theme',
],
'order' => ''
),
'Box' => array(
'className' => 'Boxes.Box',
'foreignKey' => 'box_id',
'type' => 'INNER',
'conditions' => '',
'fields' => '',
'fields' => [
'id', 'container_id', 'type', 'space_id', 'room_id', 'page_id', 'container_type', 'weight',
],
'order' => ''
)
);
Expand Down
20 changes: 0 additions & 20 deletions Test/Case/Model/Box/GetBoxWithFrameTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,6 @@ public function testGetBoxWithFrame() {
'box_id' => '1',
'is_published' => true,
'weight' => '1',
'created_user' => null,
'created' => null,
'modified_user' => null,
'modified' => null,
),
'Box' => array(
'id' => '1',
Expand All @@ -72,18 +68,6 @@ public function testGetBoxWithFrame() {
'page_id' => null,
'container_type' => '1',
'weight' => null,
'created_user' => null,
'created' => null,
'modified_user' => null,
'modified' => null,
),
'TrackableCreator' => array(
'id' => null,
'handlename' => null,
),
'TrackableUpdater' => array(
'id' => null,
'handlename' => null,
),
'Room' => array(
'id' => '1',
Expand All @@ -99,10 +83,6 @@ public function testGetBoxWithFrame() {
'default_participation' => true,
'page_layout_permitted' => false,
'theme' => null,
'created_user' => null,
'created' => null,
'modified_user' => null,
'modified' => null,
),
'RoomsLanguage' => array(
'id' => null,
Expand Down

0 comments on commit 06e9234

Please sign in to comment.