krutovav, мы тут в основном гадаем с помощью хрустального шара, но у вас проблема в сервере. "Задержкой" мог быть простой лоадер на странице, который крутился секунд 5 отвлекая внимание. Посмотрите какой версии php, дайте ему больше мощностей, включите opcache и может даже nginx не придется трогать. Может вы переехали на сервак мощный, но софт не настроили под него.
asmodeusta: вариантов может быть много, но все они будут схожи. Тут всё зависит от вашей реализации. Если есть memcache, то пишите туда факт отправки формы от пользователя, но с привязкой например к сессии или ip. Храните минут 5, ajax'ом можно проверять возможность отправки формы. Мемкэш удобен, что данные не будут накапливаться большим скопом, но опять же, если посещалка полтора человека, можно и в базе хранить и очищать раз в месяц.
lagoy: закэшировать где-нибудь факт отправки формы или в базу записать, потом при отправке проверять и сообщать, что вы отправили запрос недавно, мол подождите.
Хочу дополнить ответ. У html5 появился новый атрибут у тэга "a". Можно ему прописать download="Имя_файла" и при клике по ссылке файл будет скачиваться с указанным именем.
fiter: Как насчет мутаторов? Я в проекте у себя сделал так(без отношений, но думаю будет понятно):
в моделе добавил: protected $appends = ['avatar_path'];
и
public function getAvatarPathAttribute() {
$this->avatar = $this->avatar ?: 'default.png';
return Storage::disk('local')->url("avatar/" . $this->avatar);
}
В итоге в моделе Artist появился новый метод "avatar_path".
Почитайте про мутаторы, вроде это то, что вы хотели - подобие промежуточной обработки. Еще есть сериализатор, тоже похоже понадобится.