Что значит "не работает с изображениями"? Если Вы оборачиваете HTML чем-то на каждом запросе, это уже не статика. А что мешает записать в stream сначала head, потом контент файла, а потом footer? Зачем сначала вычитывать все из stream в память и передавать в новый stream, если можно сделать pipe?
HTML контента оборачивается общим для всех страниц header и footer, не более того, я думал, что это небольшая оптимизация такая
А на счёт последовательного прочтения - каким образом вы предлагаете это делать? У меня же несколько ReadStream'ов, как я могу запайпить их друг на дружку?
Оптимизация в том, чтобы банально читать меньший объем файла Забыл сказать - я же кеширую прочитанный head и footer Просто в мапу их складываю, и достаю их оттуда по необходимости
Как мне кажется, отдать один файл стримом быстрее, чем целиком читать его в память на каждый запрос и склеивать. Плюс, тогда Вы можете кешировать файлы целиком, что будет еще быстрее.
Вариант с кешом каждого файла рассматривал, думал, что будет слишком много оперативки есть А чтение файла стримом - это свобода по объему файла и не очень долго, потому как файлы большими быть не могут по определению (проект чисто учебный опять же)
При большом количестве запросов опреративки может быть занято еще больше, так как Вы будете читать один и тот же файл целиком в память столько раз, сколько запросов придет. Со стримом такой проблемы не будет.
Второй момент. Не нужно ложить все файлы в память (если их мало, то можно, конечно же). Почитайте про LRU и LFU cache