Лучше так, как вам удобнее. Я предпочитаю описывать отношения декларативно и делегировать работу с БД ORM.
Но от того, что вы используете, смысл не меняется - вам всё равно нужна связующая таблица.
Анатолий Медведев: кто говорит о разовой работе? Например, написал я CMS и хочу её продавать. Если не обфусцировать ядро, то ничто не помешает купившему систему раздать её на условных торрентах. Обфускация, конечно, 100% защитой не является, но отпугнёт хотя бы ленивых и неграмотных.
Поэтому, вы решили поубивать время отвечающих, чтобы они за вас поискали?
Поскольку вы даже основ системы не знаете, то единственное, что вам поможет - эти курсы.
За последний год никаких улучшений и вообще доработок (не считая внедрение рекламных баннеров) не проводилось. До этого что-то ещё делалось. Идей и доработок предложено довольно много, но ими всё никак не займутся и я, откровенно говоря, потерял всякую надежду.
Асинхронная загрузка не поможет в этом случае - всё равно сразу после скачивания запустится их парсинг. Просто на время скачивания рендеринг страницы не остановится, но если они у вас итак в конце, то профита вы не увидите.
Идеальное решение (с точки зрения обозначенной цели):
1. Оставить только самый нужный для старта страницы минимум скриптов, подключать их в конце страницы.
2. Всё остальное грузить и стартовать "руками" через пару секунд после окончания рендеринга страницы.
Я не увидел в статье ничего, про сжатие средствами браузера, именно об этом речь в вопросе. Сторонние механизмы сжатия реализовать, разумеется, можно, об этом даже автор в тексте вопроса написал.
Это как раз реализация схемы "сжатие сделать в JS, а для того чтобы не зависало использовать web worker".
Напрямую на вопрос не отвечает, но всё равно полезная ссылка.
Просто заметка - ни одна из целей с английским никак не связана. Соответственно, вы либо позёрствуете и сами себе усложняете тем самым задачу, либо неправильно формулируете цели.
Но от того, что вы используете, смысл не меняется - вам всё равно нужна связующая таблица.