@WoWtchik

Как готовить сервер на Go для кеширования страниц?

Нужен был простой веб сервер, немного кастомизируемый, как HTTPSimpleServer на питоне, только компилируемый в бинарник. Выбор пал на Go. Все хорошо, но он не дает использовать кеширование страниц при помощи манифеста.
Chromium выдает
Application Cache Progress event (0 of 2) localhost:10000/index.html
Application Cache Error event: Resource fetch failed (4) localhost:10000/index.html
Весь сервер по сути
http.Handle("/", http.StripPrefix("/", http.FileServer(http.Dir("."))))
if err := http.ListenAndServe(":10000", nil); err != nil {
log.Fatal("ListenAndServe: ", err)
}

манифест
CACHE MANIFEST

CACHE:
index.html
prevS.html

запускаю, python -m SimpleHTTPServer 10000.
Все кешируется. Но нужно заставить работать Go.
Как?
  • Вопрос задан
  • 2388 просмотров
Пригласить эксперта
Ответы на вопрос 2
@SilentFl
Хороший вопрос =)
Для Go запроса вида "/" и "index.html" одно и то же, а для кеширования - разные вещи.
Укажите "/" вместо "index.html", и будет счастье.
Ответ написан
Комментировать
@WoWtchik Автор вопроса
Как оказалось все там просто:
нужно просто было удалить index.html из манифеста. В большинстве браузеров, которые поддерживают технологию, страница, в которой объявлено использование манифестов, закешируется и так.

P.S. (Offtop):
Если в странице, есть через xmlhttprequest (или ajax), их следует указать в манифесте, например в секции Internet (если они не должны кешироваться), даже если нет запроса конкретного документа, например:
request = $.ajax({url : "./getBook/",
                          type : "GET",
                          timeout : 500,
                          success : syncPagesCarring(dt)});

в манифесте будет выглядеть как:
INTERNET:
./getBook


без указания в манифесте, не будет кеширования (по крайней мере в хромиуме v39), а все запросы даже при доступном сервере с закешированной страницы будут отправляться
на деревню дедушке.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы