posts cache bug fixed

posts
serr 2025-04-13 12:26:48 +03:00
parent 1f0c0d22c8
commit e2685ddde6
2 changed files with 18 additions and 2 deletions

View File

@ -12,7 +12,7 @@ func PostPageHandler(app *models.App) http.HandlerFunc {
var err error
// Страничка рендерится только если ее нет в кэше
pageData, ok := app.PagesCache.Get(models_pages.PostPageTmplName)
pageData, ok := app.PagesCache.Get(r.URL.Path)
if !ok {
post := app.Posts[models_pages.PostLink(r.URL.Path)]
@ -22,7 +22,7 @@ func PostPageHandler(app *models.App) http.HandlerFunc {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
app.PagesCache.Set(models_pages.PostPageTmplName, pageData)
app.PagesCache.Set(r.URL.Path, pageData)
}
sendPostPage(w, pageData.([]byte))

View File

@ -0,0 +1,16 @@
# Система загрузки постов
Началось всё с того, что я задумался о том, как же всё таки лучше хранить посты на этом сайте.
Раньше в своих блогах я хранил посты записями в sql базе данных. Ячейка с непосредственно данными поста содержала в себе его html разметку. Я также делал админ-панель на сайте чтобы эту разметку можно было редактировать прямо там.
Но писать что-то в html довольно неудобно, медленно и тд. Писать в *markdown* намного удобнее. Сразу же нашел инструмент [github.com/gomarkdown/markdown](https://github.com/gomarkdown/markdown), позволяющий легко ([пример](https://github.com/gomarkdown/markdown?tab=readme-ov-file#usage)) конвертировать md байты в html байты. А это все что мне нужно.
## Горячая перезагрузка
Подумал, что неплохо было бы написать hot-reloader, чтобы посты менялись на сайте если я как-то их меняю в папке на сервере.
**Идея выглядит следующим образом:** есть команда для сборки бинарника (может быть абсолютно любой, хоть cargo, хоть make, хоть gcc и тд., главное чтобы соответствующая система сборки была установлена на устройстве), путь до собранного бинарника, и список директорий, за которыми надо следить.
Далее, запускается скрипт, собирает указанной командой бинарник и начинает следить за директориями. При каких-либо изменениях в директориях, бинарник пересобирается и перезапускается.
На чем писать? Я хочу чтобы никаких зависимостей у скрипта не было вообще. Чтобы можно было его скачать, настроить за пару секунд и все. Решил писать на bash. Который я кстати **вообще не знаю**. Посидел пару часов, спрашивая непонятные моменты у deepseek. Скрипт в итоге [получился](https://git.hikan.ru/serr/eye-hot-reloader) ровно таким, какой был мне нужен, и уже контролирует работу серверной программы этого сайта.