posts cache bug fixed
parent
1f0c0d22c8
commit
e2685ddde6
|
@ -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))
|
||||
|
|
|
@ -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) ровно таким, какой был мне нужен, и уже контролирует работу серверной программы этого сайта.
|
Loading…
Reference in New Issue