Я какое-то время пытался понять эту проблему, перепроверяя свой код и выполняя поиск в Интернете, я нашел несколько возможных ответов, если причина была в чем-то другом, но не совсем так, как здесь, поэтому я подумал, что пришло время опубликовать мой первый вопрос, надеюсь, это не относится к stackoverflow.com:
В файле журнала ниже кажется, что клиент отправляет два запроса на один и тот же ресурс, но с разными IP-адресами одновременно. Каждый клиент имеет уникальный идентификатор «12345» в случае этого клиента. Часть моего рабочего процесса происходит после того, как мы переходим на последнюю страницу, страница 8 -> «/ app / page / 8/12345» приложение отправляет электронное письмо.
Насколько я могу судить, именно эти повторяющиеся запросы к приложению вызывают повторяющиеся действия в моем контроллере, вызывающие повторяющиеся электронные письма.
Итак, мой вопрос: что могло вызвать эти повторяющиеся запросы и что я могу с этим сделать?
Это не происходит для каждого запроса или каждого пользователя, это просто происходит с некоторыми пользователями. Когда я тестирую, файлы журнала показывают только один запрос, когда я нажимаю кнопку отправки в браузере, никаких дубликатов.
Лог-файл:
.
.
.
.
Started GET "/app/page/5/12345" for 189.19.xxx.xxx at 2013-02-17 22:44:46 -0800
Processing by MainController#page as */*
Parameters: {"page_no"=>"5", "id"=>"12345"}
Started GET "/app/page/5/12345" for 184.102.xxx.xxx at 2013-02-17 22:44:46 -0800
Processing by MainController#page as HTML
Parameters: {"page_no"=>"5", "id"=>"12345"}
Rendered main/_range_table.html.erb (7.1ms)
Rendered main/_range_table.html.erb (7.2ms)
Rendered main/page.html.erb within layouts/main (18.3ms)
Completed 200 OK in 29ms (Views: 17.5ms | ActiveRecord: 4.2ms)
Rendered main/page.html.erb within layouts/main (17.6ms)
Completed 200 OK in 26ms (Views: 17.2ms | ActiveRecord: 3.3ms)
Started POST "/app/page/5/12345" for 184.102.xxx.xxx at 2013-02-17 22:44:57 -0800
Processing by MainController#page as HTML
Parameters: {"utf8"=>"?", "authenticity_token"=>"4exZYGAEcu4xffiBfh45u877bvF0zGpNXJhL98QLzy0=", "response"=> {"43"=>"8"}, "commit"=>"Submit", "page_no"=>"5", "id"=>"12345"}
Redirected to http://<mydomain_here>/app/page/6/12345
Completed 302 Found in 24ms (ActiveRecord: 6.7ms)
Started GET "/app/page/6/12345" for 189.19.xxx.xxx at 2013-02-17 22:44:57 -0800
Processing by MainController#page as */*
Parameters: {"page_no"=>"6", "id"=>"12345"}
Started GET "/app/page/6/12345" for 184.102.xxx.xxx at 2013-02-17 22:44:57 -0800
Processing by MainController#page as HTML
Parameters: {"page_no"=>"6", "id"=>"12345"}
.
.
.
.
.
Спасибо за любую помощь или предложения, которые укажут мне правильное направление!
Хорошо, я считаю, что после долгих исследований и повторного просмотра устаревшего кода в моем приложении у меня есть ответ на свой вопрос:
Откуда поступают эти запросы? Из того, что я исследовал, и из моих наблюдений:
а. Эти запросы стали более частыми с первого года (январь 2013 г.), но без изменений в моем коде кажется, что что-то изменилось в Интернете, возможно, или с клиентскими машинами или сетевой инфраструктурой. Я собираюсь использовать сетевую инфраструктуру, возможно, какое-то обновление .... см. (Б.)
б. Во время моего онлайн-исследования было высказано предположение, что некоторые прокси-серверы могут повторно запрашивать URL-адреса своих клиентских запросов и выполнять дополнительные GET для кэширования этих страниц. Я видел, как это происходило через несколько секунд после первоначального запроса или до 30 минут спустя.
Большая проблема ... Я нашел устаревший код, который обрабатывал изменения БД по запросам GET, насколько я понимаю, это нет, и все изменения БД должны выполняться только по запросам POST.
Таким образом, в основном мой код должен иметь возможность обрабатывать столько GET, сколько поступает по одному и тому же URL-адресу, не предпринимая никаких действий, кроме возврата одних и тех же данных каждый раз без обновлений БД.
Итак, теперь это исправлено. Надеюсь, этот пост поможет кому-нибудь с подобной проблемой !!