Всем привет!
Имеется самодельный движок, в котором шаблону подключаются несколько файлов кэша, содержащие данные, которые потом передаются переменным $menu, $rubrics и $cloud.
Есть два вариант подключения:
1. Вариант.
Сделать три файла menu.cache, rubrics.cache и cloud.txt. В файле index.php в самом коде прописываем:
$cloud = file_get_contents('gs_blog/includes/cloud.txt');
$menu = file_get_contents('gs_blog/cache/menu.cache');
$rubrics = file_get_contents('gs_blog/cache/rubrics.cache');
2. Вариант.
Делаем один файл, назовём его cache.php и в нём пишем:
<?php
$cloud = 'HTML';
$menu = 'HTML';
$rubrics = 'HTML';
?>
Затем в файле index.php подключаем созданный файл:
include 'includes/cache.php';
Какой из этих вариантов будет работать быстрее?
ak167
3 файл-запроса vs 1
+ в инклюде можно разместить динамику PHP (например связанную с мультиязычностью контента), если вдруг однажды понадобится + в file_get_contents можно получить warning если файла нет, а в некоторых способах инклюдах нет.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
jetistyum
23.07.2016 - 23:51
Так а в чем вопрос? Запусти это все в цикле 10 000 раз, и замеряй время первого и второго варианта. А вообще советую учить готовые библиотеки, движки, фреймворки, чтобы не изобретать велосипеды.
Цитата (jetistyum @ 23.07.2016 - 19:51) |
Так а в чем вопрос? Запусти это все в цикле 10 000 раз, и замеряй время первого и второго варианта. А вообще советую учить готовые библиотеки, движки, фреймворки, чтобы не изобретать велосипеды. |
jetistyum, так и сделал. Первый вариант выполнялся за 0,4 секунды, а второй всего за 0,25.
Гость_Fart
25.07.2016 - 05:14
Цитата (ak167 @ 24.07.2016 - 13:45) |
Цитата (jetistyum @ 23.07.2016 - 19:51) | Так а в чем вопрос? Запусти это все в цикле 10 000 раз, и замеряй время первого и второго варианта. А вообще советую учить готовые библиотеки, движки, фреймворки, чтобы не изобретать велосипеды. |
jetistyum, так и сделал. Первый вариант выполнялся за 0,4 секунды, а второй всего за 0,25.
|
начать стоит с того что: немного не ясно для каких целей создается куча кеш-файлов. у обоих вариантов вообще разные назначения. 1 - для временного хранения, 2 - для постоянного (замена БД).
если первый вариант будет правильно организован и создается 1 кеш файл с json данными например (создавая что-то вроде псевдо-сессии), то скорость 1 варианта будет как и у 2 варианта.
если ты пытаешься создать кеш без каких либо изменений во 2 варианте и тут не факт, что скорость может быть лучше, так как при доп инклудах - скорость выполнения скрипта увеличится.
к тому же не только скорость важна, так как создавая новые переменные и прочее увеличивается нагрузка на цп + озу у сервера. 1 запрос он да - не особо напрягать будет, а при серьезных нагрузках ощутимо будет на косячных вирт. хостах.
jetistyum
25.07.2016 - 11:33
А на практике какая разница от всего этого ? нужно ли там вообще кэширование? нужно ли его организовывать на подключаемых файлах, или может сделать кэш на уровне nginx?
заметна ли глазу разница в 0.0...2 сек ? чтобы вообще заморачиваться с этим?
Цитата |
А на практике какая разница от всего этого ? нужно ли там вообще кэширование? нужно ли его организовывать на подключаемых файлах, или может сделать кэш на уровне nginx? заметна ли глазу разница в 0.0...2 сек ? чтобы вообще заморачиваться с этим? |
На практике, да и в жизни, надо прежде всего заставить себя просто подумать. Ответить на сакраментальные вопросы что и для чего делать.
Ещё, на практике, для таких случаев тесты не делают, ну как мне кажется. Почему? Потому, что надо просто спокойно сесть и внимательно подумать, поразмышлять. Тесты не панацея, ситуации где они показывают ранжирование результатов очень даже не однозначны. И вполне могут быть ошибочными, или стать такими через год, например, при другой нагрузке, или даже через день - только потому, что где-то изменился узел подключения и всё стало потихоньку есть ресурсы.
Ну, а если всё таки тест сделан, то размышлять в духе "заметна ли глазу разница в 0.0...2 сек ?" как-то не по программистки что-ли, правильно стоило бы написать значителен ли будет прирост в скорости на 62,5%? И так же по программистки ответить самому себе - Конечно!
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
bestxp
26.07.2016 - 10:58
сакраментальный вопрос, как ты решишь вопрос инвалидации кеша?)
Zzepish
26.07.2016 - 15:33
jetistyum
на этапе обучения - очень тупой совет!
Потом и будет сидеть на "библиотеки, движки, фреймворки" не зная основ!
jetistyum
26.07.2016 - 18:21
Zzepish Давай не будем оскорблять друг друга.
То что он делает, это не основы, а изобретение велосипеда. Он и так не знает основ. И врядли их узнает, если будет свои велосипеды строить, не читая чужой.
Я вот не знаю как внутри устроена функция file_get_contents() а так же драйвер файловой системы, который используется для чтения файлов на низком уровне, да мне и не нужно это знать, ведь есть простой интерфейс - в данном случае ф-я file_get_contents().
Так же и с кодом, скачал фреймворк, и написал и работает. $cache->get(), $cache->set(), в конфигурации указал провайдер кэширования: файловая система, или Redis сервер...
Если хочется разобраться как устроено - открываешь исходники фреймворка и смотришь. Над ним трудились довольно умные люди, переймешь хорошие практики.
Более того, сейчас рынку нужны только те программисты, которые работают с библиотеками и фреймворками. Вот и задумайся, на что тратить время.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.