Laravel по-русски
Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Всем привет!
Подскажите пожалуйста, у меня есть список отелей в БД и еще есть метод который принимает ID и возвращает мне цены. Я вызываю свой метод внутри цикла Foreach но выгрузка цен получается очень долгой, соответственно сама страничка долго грузится.
Хотел бы узнать у знатоков, как можно сначала загрузить страницу, а уже потом загрузить все цены через AJAX? Или каким то другим способом? Пока цены грузятся хотелось бы видеть какую то гифку)) загрузка))). Если это все возможно конечно.
Вот мой код:
@foreach($Hotels as $hotel)
<img src="{{ asset($hotel->img) }}" width="800" height="533" class="img-responsive" alt="{{ $hotel->HotelName }}">
<div id="score"><span>{{ $hotel->score }}</span>{{ $hotel->rating }}</div>
From/For Night
<span class="price">
<sup>$</sup>
<?php
$price = 'NA';
$price1 = XML::GetMinimumDBLPriceForTodayBB(APP-KEY, APP-NAME, $hotel->HotelID, 1);
$price2 = XML::GetMinimumDBLPriceForTodayBB(APP-KEY, APP-NAME, $hotel->HotelID, 2);
if(is_array($price1)){
$price = round($price1[0]->DailyPrice);
}elseif(is_array($price2)){
$price = round($price2[0]->DailyPrice);
}
?>
{{ $price }}
</span>
<div class="hotel_title">
<h3>{!! preg_replace("/ /", " </strong>", '<strong>'.$hotel->HotelName, 1 ) !!}</h3>
<div class="rating">{{ $hotel->HotelClass }}</div>
@endforeachВот этот момент когда приходят цены в переменную $price грузит очень страницу.
Не в сети
Не следует логику пихать во вьюху. Все данные должна предоставлять модель.
$(document).ready(function() {
$.ajax({
url: '/getdata', // путь до контролера, который выдает данные о цене
type: 'POST',
success: function(data){
$('.gifka_s_animaciey').remove(); //убираем гифку с анимацией загрузки
$('.price').html(data); //Вставляем значение цены.
}
});Изменено Afatar (16.12.2015 05:52:26)
Не в сети
Не следует логику пихать во вьюху. Все данные должна предоставлять модель.
+1
Не в сети
Я бы лучше в кэш просто цены запихал, они же не при каждой загрузке страницы меняются, более того они даже не каждую минуту меняются.
(не для MySQL)
цены можно кешировать и в БД например на базе хранимых процедур sql (проще говоря на триггерах и на функциях), когда какие-либо переменные в цепочке формирования цены меняются...
и читать оттуда.
однако это грязное чтение, означающее, что пока вы читали-формировали-выводили, - данные могли измениться.
чистое чтение и формирование данных налету штука отличная но трудоёмкая.
для начала надо проектировать бд в нормализованном виде, не оптимизированном (читай гугл!)
из нормализованных таблиц создавать view'шки, уже в виде оптимизированных таблиц, откуда и читать...
пишешь в таблицу А, читаешь из вьюшки Z состоящей из таблиц A+B+C.
тем самым кода рнр меньше, масштабируемости больше.
и опять же проект не ясен.
это паблик? если паблик, то забудь про чистое чтение. потому что кирпич на F5 на той странице, где формируются данные ... ну ты понял, братан ![]()
Не в сети
Страницы 1