За последние 24 часа нас посетили 113890 программистов и 6498 роботов. Сейчас ищут 1484 программиста ...

Что работает быстрее?

Тема в разделе "PHP для новичков", создана пользователем !Dron, 28 фев 2015.

  1. !Dron

    !Dron Новичок

    С нами с:
    28 фев 2015
    Сообщения:
    6
    Симпатии:
    0
    Добрый день.
    Есть html файл - шаблон (page.html). Он поделен на несколько секций с помощью разделителя. Когда загружается страница, которой соответствует данный шаблон (page.php), обработчик берет шаблон, рвет его по разделителю (регулярное выражение) и куски вставляет в нужные места. Страница готова.
    C другой стороны данный шаблон можно запросто генерировать через сам PHP при помощи массивов и циклов (3-4 массива и столько же циклов).

    Как считаете, что работает быстрее - загрузка через шаблон или генерация на лету? Размер шаблона - от 2 до 15КБ.
    Сайт таков, что шаблоны почти не модифицируются.
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.870
    Симпатии:
    955
    быстрее так как пхп-машина сможет закэшировать
     
  3. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Быстрее должно работать РНР файл, по сколько на сколько я знаю регулярные выражения жрут нормально ресурса, во вторых как я понимаю ты получаешь текст данного html файла, записать его в переменную, потом его полосовать, вставляя в него что ты там собираешься.

    И в конце концов есть такая штука, шаблонизаторы, так вот они работают по принципу, пишется псевдокод (ну типа твой страницы html) и потом РНР перебирает эту страницу, и твои "разделители" заменяет на РНР теги, и сохраняет эту страницу в формате РНР и потом ее использует, а не html.
     
  4. !Dron

    !Dron Новичок

    С нами с:
    28 фев 2015
    Сообщения:
    6
    Симпатии:
    0
    Генерация на лету, говорите работает быстрее? Ну тогда так и сделаю.

    Да, html загружается в переменную, затем с помощью рег.эксп. (обычный explode не подходит) разделяется по разделителю и полученные куски html-кода вставляются уже в другое место.
     
  5. !Dron

    !Dron Новичок

    С нами с:
    28 фев 2015
    Сообщения:
    6
    Симпатии:
    0
    Я просто вот что подумал: есть страница, которая генерируется из глобального шаблона + php-кода, вывод которого зависит от страницы. Так вот получается, что этот самый вывод для каждой страницы свой и при этом всегда остается постоянным. Т.е., условно говоря, для страницы page1.php он всегда выводит "Тророло", для страницы page2.php он всегда выводит "Йцукен", для страницы page3.php он всегда выводит "1234567890"... Так вот может, вместо того, чтобы каждый раз гонять php-код, стоит его вывод единожды сохранить в html файл для каждой такой страницы? И уже потом использовать этот html-код, вставляя его в нужные места страницы? (предварительно разбив полученный шаблон по разделителю)
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.870
    Симпатии:
    955
    у тебя есть шаблон на метаязыке
    шаблонизатор перегоняет этот шаблон в обычный пхп файл
    в процессе генерации страницы ты устанавливаешь значения для шаблона
    когда нужно показать страницу - шаблонизатор подключает "скомпилированную" версию шаблона - пхп файл
    поскольку это пхп-файл то его можно закэшировать соответствующими инструментами и ускорить тем самым работу
    постоянный разбор регулярками не позволит кэшировать плюс в принципе является очень дорогой процедурой

    это касательно шаблона
    теперь касательно готовой страницы
    протокол передачи гипертекста изобрели хренову тучу лет назад и в нем есть такая штука как conditional get
    если сопроводить документ нужными заголовками и если документ не поменялся на сервере - браузер покажет его из своего кэша
    если сопроводить документ нужными заголовками и если документ не поменялся на сервере - прокси группы пользователей будет показывать его из своего кэша
    и наконец если сопроводить документ нужными заголовками и если документ не поменялся на сервере - сам сервер может выдавать его из своей памяти не обращаясь к генератору