В вашем PHP-коде сделайте следующее:
if(isset($_SESSION["pagename-LAST_VIEWED"])) {
v = $_SESSION["pagename-LAST_VIEWED"])
if(time() - v < 15) {
// user is refreshing more than once per 15 seconds
// send them something else and die
}
}
$_SESSION["pagename-LAST_VIEWED"] = time();
Пожалуйста, не обращайте внимания на мой отвратительный псевдо-PHP, это не мой повседневный язык.
Это предотвратит как обновление страницы (F5) , так и , когда пользователь просто снова щелкнет закладку или снова нажмет Enter в адресной строке.
Вы также можете включить некоторые агрессивные мета-теги кэширования и заголовки HTTP, что предотвратит попадание некоторых обновлений на ваш сервер, но приведенный выше код должен быть достаточно масштабируемым.
Еще одна вещь, которую стоит учесть: корень проблемы в другом коде, а не в ваших пользователях. Попробуйте переписать свою страницу, чтобы она автоматически обновляла ту часть, которую они хотят видеть через AJAX, с временной задержкой. Это даст им стимул не использовать Refresh и поможет вашему серверу справиться с ситуацией, только обновив небольшой кусочек данных, которые они хотят видеть обновленными.