Я будую програму / гру в Codeigniter 3. Є один додаток, що працює на проектор перед класом, а інші користувачі можуть грати через там мобільний. Програмі потрібно відправити json гравцям. Це має бути зроблено без будь-яких послуг, таких як Pusher або socket.io, тому що я не можу нічого встановити на сервері, і немає ніякого бюджету на зовнішню службу.
Таким чином, у мене є деякі Javascript працює на користувачів:
setInterval(function(){
$.getJSON( "ajax/data/json", { "id": id }, function( data ){
// Do stuff with the data if its available
});
}, 1000);
У додатку у мене є щось на зразок цього:
public function json()
{
$this->load->model("data_model");
$data = $this->data_model->get_json($this->input->get("id"));
echo json_encode($data);
}
Моя єдина турбота - гра на багатьоходночасно. Чи можу я використовувати Codeigniters "Кешування сторінок" або "Cashing баз даних", щоб запобігти надто багато запитів до бази даних, і який найкращий спосіб здійснити це? Чи є інше рішення, щоб запобігти цьому?
Відповіді:
1 для відповіді № 1Я думаю, що це досить важке питання, тому що існує багато можливостей для вирішення цієї проблеми
На мою думку, найбільшою швидкістю річ євикористання сервера зберігання ключів / значень як "між" сервером (db -> key / value storage -> output) Я встановив REDIS практично на всі програми CI, тому що це так швидко
якщо ви маєте доступ до свого сервера, настійно рекомендую встановити службу, подібну до redis.
Наприклад, я швидко подивився:
На локальній системі I5-2500 з 16 Гб Ram я можу виконати 10.000 запитів приблизно за 1 секунду
І особливо в налаштуваннях ajax ви повинні бути обережні - тому що ваш запит не повинен тривати довше 100 мс (приблизно!)
Нижче наведено кілька посилань для створення зображення:
якщо ви не маєте доступу до вашого сервера, спробуйте використати кешування на основі файлів. Для отримання додаткової інформації подивіться тут (Документація CI про кешування)