Я бы поместил код в место, где он будет работать как можно скорее, прежде чем сервер потребит слишком много ресурсов.
Я бы сказал, что вы должны отсылать как можно меньше информации, в идеале HTTP-статус 503 (временно недоступен) с коротким сообщением, ссылающимся на страницу приемлемого использования, или страницей, объясняющей людям некоторые причины, по которым они МОГУТ быть заблокированы. и что делать, если они чувствуют, что они заблокированы несправедливо. Возможно, вы захотите сделать это в текстовом / обычном формате вместо HTML, так как он будет использовать меньше байтов:)
Использование списка заблокированных IP-адресов в памяти также прерывается, когда у вас есть большое количество заблокированных адресов (скажем, 1 миллион), поскольку сканирование становится запретительным (помните, что вы должны делать это для каждого запроса к соответствующему ресурсу).
В конечном итоге вы захотите распространить списки заблокированных IP-адресов на все ваши веб-серверы и / или сохранить их централизованность - в зависимости от того, какие именно злоупотребления вы получаете или ожидаете.
Сказав это, вы обязательно должны применить принцип ЯГНИ . Если вы не испытываете реальных проблем с пропускной способностью, не пытайтесь вообще блокировать нарушителей. На самом деле очень немногие сайты делают это, и большинство из них связаны с существенными затратами на его обслуживание (например, поиск в Google)