Есть скрипт
#!/bin/bash
GALLERY_DIR="./gallery"
OUTPUT_FILE="./gallery/gallery-data.js"
echo "const galleryData = [" > "$OUTPUT_FILE"
while IFS= read -r -d '' img; do
filename=$(basename -- "$img")
name_no_ext="${filename%.*}"
md5_value=$(md5sum "$img" | awk '{print $1}')
printf " {\n" >> "$OUTPUT_FILE"
printf " i: \"%s\",\n" "$filename" >> "$OUTPUT_FILE"
printf " t: \"%s\",\n" "$name_no_ext" >> "$OUTPUT_FILE"
printf " d: \"\",\n" >> "$OUTPUT_FILE"
printf " s: \"%s\"\n" "$md5_value" >> "$OUTPUT_FILE"
printf " },\n" >> "$OUTPUT_FILE"
done < <(find "$GALLERY_DIR" -maxdepth 1 -type f \( -iname "*.webp" -o -iname "*.jpg" -o -iname "*.png" \) -print0)
echo "];" >> "$OUTPUT_FILE"
Который генерирует файл JS формата с последующей её загрузкой у клиента.
Выхлоп этого js следующий:
const galleryData = [
{
i: "/gallery/123123.webp",
t: "можно менять",
d: "и описание тоже",
s: "3b10082cf3075f2e6a57deab33f5868d"
}
];
Я понимаю, что эту систему можно увеличить хоть до 10тысяч фотографий, но размер в 10мб~ будет велик, если я правильно считаю
Как это все оптимизировать можно?
Код который хавает данные объекты их генерирует до бесконечности, то есть не каждый браузер сможет отобразить все 10к фоток
А если сделать ленивую загрузку? Даже с кешированием, через brotli/gzip?
Этот проект скорее для самого себя чем в продакшн, я не знаю что делать.
Да, я пробую только в грубую статику, только хардкор и генерация на стороне клиента
Буду рад любой идеи, как реализовать.. разбиение js-database и скорее их ленивой загрузки, но без разбиения основного файла
Так как сама цель иметь тьму объектов и статика, полностью статика.