Что касается CSS.
Можно разделить код CSS на две части: первая небольшая часть для того, чтобы сайт выглядел пристойно, вторая - чтобы выглядел идеально.
Первый блок встраивается в HTML, а второй загружается из файла.
Можно поставить куку и при её наличии в текст HTML стили не подключать, а использовать только подключаемый файл. Или делать такое деление только на посадочных страницах, а на более сложных внутренних не заморачиваться.
Насчёт JS принцип тот же. Первый блок встраивается в HTML чтобы сайт не ломался, пока загружается основной JS, но тут так просто не поделишь. Я бы порекомендовал сайт изначально делать так, чтобы он не ломался, пока сценарии JS не загрузились.
Это называется progressive enhancement. В целом это даёт более высокий рейтинг от google pagespeed insights и радует посетителей.
Не забудь выставить заголовки для кэширования CSS и JS в браузере.