PHP include или MySQL выборка

У меня есть базовый обучающий сайт, а на панели навигации есть список категорий (в виде дерева, например, основные категории и их дочерние элементы) с примерно 30+ категориями, которые могут увеличиваться, но не намного.

На каждой странице я извлекаю их из базы данных, затем, используя PHP, я делаю древовидные вычисления, чтобы упорядочить их в дерево (родительский, затем дочерний).

Мне кажется, что нет необходимости делать это каждый раз, поэтому я хочу кэшировать это. Но это всего лишь 30 или максимум 100 категорий, так стоит ли их кешировать?

Итак, я хочу знать, какой из этих методов быстрее:

  1. Получите их из MySQL, а затем выполните расчет в PHP.
  2. Выполните шаг (1) один раз, каждый раз при удалении, добавлении или обновлении категории, и сохраните результат в файле HTML. Затем каждый раз, когда страница загружается, приложение проверяет и включает файл, если он существует, или выполняет шаг (1) снова.

Примечание. Каждый раз, когда категория удаляется, добавляется или обновляется, файл кеша удаляется.

только 100% надежный способ узнать это ....... Проверьте себя.

user9487972 20.06.2018 00:00

Вы можете использовать memcache (d).

user3783243 20.06.2018 00:02

"Но это всего лишь 30 или максимум 100 категорий, так стоит ли их кешировать?" эти числа здесь действительно ничего не значат, все зависит от того, сколько времени они занимают в среднем, как часто данные могут меняться и т.д. стоит выше запрашивать каждый раз.

James 20.06.2018 00:11

категории не меняются часто, может быть, раз в месяц или год, а может быть, никогда, но я все же хочу знать, какой способ лучше, потому что я хочу использовать их для более сложных и больших данных

Mohammed Yousif 20.06.2018 00:13

Имейте в виду, что некоторые теоретически более быстрые методы могут стоить очень дорого. Т.е. то, что быстрее с меньшим набором данных, может плохо масштабироваться. (например, крайний случай: быстрая сортировка или сортировка по выбору по набору из 3 элементов) Лучший способ получить хорошее представление о том, что лучше всего в любой конкретной ситуации, - это протестировать с набором данных, который находится в порядке ваших реальных данных .

Ashton Wiersdorf 20.06.2018 00:19

Я бы сделал последнее, но кэшировал бы только данные json. Таким образом, макет не определяется файлами кеша. Однако для этого требуется больше кода, и его сложнее поддерживать. Так что, если вы, возможно, позже захотите добавить другие данные кеша, создайте для этого систему сейчас.

Xorifelse 20.06.2018 00:31
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
6
89
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуйте написать две автономные программы PHP (т.е. программы, которые вы можете выполнить, запустив $ php script_name.php в командной строке), которые выполняют один из этих методов соответственно. Затем вы можете использовать утилиту time (при условии, что вы программируете на macOS или разновидность Linux) следующим образом:

$ time php script_name.php

чтобы узнать, сколько времени требуется для выполнения сценария.

По общему признанию, это довольно грубый способ проведения сравнительного анализа. Если вы серьезно относитесь к этому, взгляните на Профайлер xdebug. Похоже, это то, что вам может понадобиться.

Ответ принят как подходящий

Зачем нужны файлы?
Обычно кеширование на стороне сервера - лучшее решение в этом сценарии. Но также вы можете использовать javascript для кеширования его на сторона клиента, используя локальное хранилище в браузерах. Таким образом, вы можете получить меню прямо из локального хранилища.

Ты можешь использовать localForage Библиотека для хранения данных на стороне клиента

рад помочь :-)

Jehad Nasser 20.06.2018 14:54

Другие вопросы по теме