Для передачи параметров в маршруте используйте массив с именами параметров в качестве ключей:
{{ route('shop.order.test', ['id' => $id, 'grouping' => $form['grouping']]) }}
Счетчик я оптимизировал работы как это:
UPDATE page_views SET counter = counter + 1 WHERE page_id = x
if (affected_rows == 0 ) {
INSERT INTO page_views (page_id, counter) VALUES (x, 1)
}
Таким образом, Вы выполняете 2 запроса для первого представления, другие представления требуют только 1 запроса.
Я сделал два наблюдения относительно счетчика представлений stackoverflow:
Существует a link
элемент в заголовке, который обрабатывает инициирование обновления количества. Для этого вопроса разметка похожа на это:
<link href="/questions/246919/increment-view-count" type="text/css" rel="stylesheet" />
Я предполагаю, что Вы могли поразить тот URL для обновления viewcount, на самом деле никогда не просматривая страницу, но я не попробовал его.
У меня был uservoice билет, где ответ от Jeff указал, что представления не увеличены от того же IP дважды подряд.
Эффективный путь может быть: Сохраните свои счетчики в Объекте приложения, можно сохранить его в файл/DB периодически и на приложении близко.
Я - поклонник стиля @Guillaume реализации. Я использую прозрачный обработчик GIF и очереди в оперативной памяти для пакетной обработки наборов изменений, которые затем периодически сбрасываются с помощью отдельного потока, созданного в global.asax.
Обработчик реализует IHttpHandler, обрабатывает параметры запроса, например, идентификатор страницы, язык и т.д., обновляет очередь, затем response.writes прозрачный GIF.
Путем перемещения персистентных изменений в отдельном потоке, чем пользовательский запрос Вы также имеете дело намного лучше с потенциальными проблемами сериализации от выполнения нескольких серверов и т.д.
Конечно, Вы могли просто заплатить кому-то еще, чтобы сделать работу также, например, с прозрачным gifs.
Для меня лучший способ состоит в том, чтобы иметь поле в таблице вопроса и обновить ее, когда к вопросу получают доступ
UPDATE Questions SET views = views + 1 WHERE QuestionID = x
Объект приложения: IMO не масштабируем, потому что может закончиться большим потреблением памяти, поскольку к большему количеству вопросов получают доступ.
Таблица Page_views: никакая потребность к, необходимо сделать дорогостоящее соединение после
Вместо того, чтобы делать вызов базы данных каждый раз, когда база данных поражается, я бы увеличивал счетчик, используя объект кеша и в зависимости от того, сколько посещений вы получаете на свой сайт каждый день, когда вы отправляете обращения к странице в базу данных каждое сотое попадание на сайт. Это намного быстрее, чем обновление базы данных при каждом обращении.
Или другое решение - анализ файла журнала IIS и обновление обращений каждые 30 минут через службу Windows. Это то, что я реализовал, и это творит чудеса.