В моем приложении rails я не могу понять, почему (только в производственной среде) Google Chrome продолжает кэшировать ответ на запрос javascript. Например, вот мой javascript:
if(active > 0){
refresh = setInterval(function(){
path = window.location.pathname;
active = path.search(/\/XYZ\/*/g);
if(active > 0){
$.ajax({
type: 'GET',
url: "/refresh_log.js",
data: { 'XYZ': $("#XYZ").val() },
success: function(data){
}
}); // end of ajax
}
else{
clearInterval(refresh);
}
}, 10000);
}
else{
clearInterval(refresh);
}
Он настроен на отправку запроса на /refresh_log.js
каждые 10 секунд. Я заметил, что если я запускаю свое приложение Rails в режиме разработки, ответ всегда будет в байтах XYZ с любым содержимым. Однако в производственном режиме он выполняет первоначальный запрос правильно, а затем каждый запрос после этого кэшируется, как показано ниже:
У меня это в файл config/environments/production.rb
:
config.cache_classes = true
config.eager_load = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = false
config.public_file_server.enabled = true
config.assets.js_compressor = Uglifier.new(:harmony => true)
config.assets.compile = true
config.active_storage.service = :local
Есть идеи, как на самом деле отключить кеширование в продакшене? Это действительно делает многие другие вещи небрежными - например, некоторые CSS, которые используются во всем приложении, включая домашнюю страницу. Он не обновляется после входа в систему, потому что он загружается из кеша и требует от меня «refre sh» страницы, чтобы все отображалось правильно.