2013-08-20 2 views
0

Я реализовал HTTP-кеш на моем последнем приложении 3.2 рельсов (скоро 4), используя вспомогательные методы, такие как fresh_when. Теперь я использовал тот же подход к действиям индекса. Нечто похожее на:Rails HTTP-кеш для запросов JS/JSON: как?

... 

def index 
    @resources = Resource.all 
    fresh_when @resources 
end 
... 

Это работает очень хорошо для HTML запросов (он отвечает либо с 304 кодом или 200 плюс шаблон index.html). Но я не могу заставить его работать для асинхронных js-запросов. На клиенте я периодически отправляю запрос «скрипт» на ту же конечную точку. Я ожидал, что он будет иметь подобное поведение (ответьте 304 или 200 с помощью шаблона index.js). Дело в том, что нет. Это всегда 200 OK и index.js. Теперь я проверил заголовки запросов, и хотя заголовок последнего-модифицированного-так нет, то есть этаг. Он должен работать, не так ли?

ответ

0

Хорошо, нашел это, и это было легко: проблема была именно в отсутствии заголовка If-Modified. Я изменил вызовы $ .getScript на $ .ajax с параметром ifModified, установленным в true, и он начал работать.