WebStorm

Рейтинг
161
Регистрация
01.11.2008
Sly32 #:льшой JSON:

И по ключу "ru" выгребает только  данные для русского интерфейса:

Fastapi умеет кэшировать  данные и пока пользователь не сменит язык - ему будет подгружаться  интерфейс из "ru" интерфейса. 
То есть в шаблонизатор приходит малюсенький обьект только с тем что нужно.

я не знаком с python, но Fastapi кэширует в итоге этот  "малюсенький объект" в каком виде? снова в json?, если да, то всё равно он его будет снова и снова парсить, уверен, что этот малюсенький объект со временем разрастётся во что-то более весомое, а если скомпилировать в байт код, то такой проблемы не будет
Sly32 #:

Ну, выше, я вроде уточнил свой вопрос. В дискуссии принято исходить от высшего уровня к нижнему. Архитектура приложения. Сначала интерфейс, потом детали реализации. в данном случае интерфейс(хранение  в файлах( пусть даже и в коде) предпочтительнее  хранения в базе. Это слишком дорого. Да, в коде - самое быстрое, но чревато проблемами, описанными выше. Ну и хранение в разных файлах противоречит как SOLID так и DRY - не повторяйся. У меня один роутер  будет обрабатывать  все языки, соответственно если мне нужно поменять что-то, мне нужно поменять что-то в обработчике  и в языковом файле, а не в 6 разных файлов для 6-ти языков.

тогда лучше всего прикрутить компиляцию джейсона в py, а далее в pyc и чтобы языки разносились при этой компиляции в отдельные файлы, а не в ообщий
Sly32 #:
Дальше. Простой запрос по языку типа SELECT * FROM table WHERE table.lang='ru',  мне выдаст n-ое количество строк, как мне потом обрабатывать это?

ещё раз повторяю, я не агитировал за хранение текстов интерфейса в базе, а обратил внимание на глупый вопрос "как мне потом обрабатывать это? "

и на вашу текущую реализацию

1 - во-первых с портянкой со всеми языками в одном файле, зачем если нужен только один язык, подгружать сразу все переводы? их надо как минимум разнести по разным файлам для каждого языка отдельно, а как максимум и отдельно для каждого модуля, плюс один общий

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

где я агитировл за хранение текстов интерфейса в базе? я просто ответил на твой вопрос "а что я буду делать со строками из базы"
Sly32 #:

Вот интересно, что? Это очень дилетанские подход. Хранить прямо в коде можно данные, которые гарантированно никогда не изменятся после выхода в прод. И даже в этом случае это лучше хранить в переменных окружения, вычитывая их из .env файла. 

и расходы на чтение файла и на работу интерпретатора одинаковые

языковые файлы, если вы не в курсе, они есть во многих популярных cms (например DLE) и хранятся также, как и у меня в  отдельных пхп файлах с объявлениями массивов, в отдельных директориях для каждого языка, они как раз и не изменяются, в вашем интерпретаторе расходы может быть и одинаковые, а в пхп нет, при включённом opcache они компилируются в байт код и никакого парсинга кода программы в дальнейшем не происходит, всё работает очень быстро, более того, даже скомпилированные пхп файлы я храню на рам диске, всё читается из оперативной памяти

PS: и да, если хотите не по дилетантски, используйте gettext  https://habr.com/ru/articles/73554/ , а я буду наслаждаться высокой скоростью своего велосипеда

vitaliy11 #:

(json или просто обычный массив в php файле).

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

Ruslan02 #:
Сегодня забыл и не включил ВПН, а Ютуб отлично работает и на вайфай и на мобильной сети, или это временно?

аналогично, со вчерашнего дня

Mik Foxi #:

вы самое главное не учитываете, еще раз самое важное: это имеет значение когда вы единственный единоличный пользователь диска, т.е. когда это выделенный сервер. вдс и тем более шаред хостинг - там тыщи пользователей, которые займут ресурсы и будет скорость диска 1 мб/с, я видел как в тарифе было написано гордо про nvme диски, а скорость записи 1 мб/с.

в каждом отдельном случае надо сравнивать параметры тарифов

Andrey_One , видимо предыдущие ораторы вас троллят, разница конечно же будет ощутимой, в HDD механика позиционирует считывающую головку, это всегда будет медленнее, чем мгновенный электронный доступ к нужным данным в SSD, кроме того есть колоссальная разница и в случайном доступе к файлам в пользу SSD, несмотря на то, что в HDD применяются кэши, все данные все равно не закэшируешь в их оперативной памяти (обычно до 256 МБ)

Sly32 #:
Да, можно так хранить. Но я сразу  вижу несколько сложностей, одну из которых ты уже привел - разные запросы под разные меню.

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

Sly32 #:
Простой запрос по языку типа SELECT * FROM table WHERE table.lang='ru',  мне выдаст n-ое количество строк, как мне потом обрабатывать это?
голубчик, таким вопросом вы показываете свою безграмотность, очевидно же  - построить массив с ключами по полю "name"


PS: Ваш вариант мультиязычности не выдерживает никакой критики - выгребать джейсон со всеми переводами каждый раз при работе программы, чтобы получить только перевод на один язык  - это подход программистов, которым для обеспечения работы лендинга выделенного сервера мало 

Всего: 590