Уточнение ответа JSmyth:
console.logCopy = console.log.bind(console);
console.log = function()
{
if (arguments.length)
{
var timestamp = new Date().toJSON(); // The easiest way I found to get milliseconds in the timestamp
var args = arguments;
args[0] = timestamp + ' > ' + arguments[0];
this.logCopy.apply(this, args);
}
};
Это:
.log
Невозможно обойтись без публикации всей страницы с помощью UpdatePanels. Вместо редизайна приложения вот несколько вещей, которые я бы попробовал:
Поскольку вы являетесь пользователем DevExpress, вы можете подумать о том, чтобы потратить немного времени на изучение их CallbackPanel , которая позволит вам выполнять асинхронную обработку без накладных расходов на UpdatePanel.
В качестве альтернативы (кто-нибудь, пожалуйста, поправьте меня, если я ошибаюсь), но если все обратных передач являются асинхронными (т.е. в UpdatePanel), теоретически невозможно отключить ViewState для всей страницы (в директиве Page) без негативных последствий? Придется совершенно сбиться с курса, но попробовать стоит.
Вам нужно будет заменить некоторые обратные передачи, содержащиеся в панелях обновления, реальными вызовами AJAX, то есть отправить только данные, необходимые для действия на сервер. и получите обратно только то, что требуется для обновления представления, избавившись от обратной передачи и UpdatePanels.
(Вы заметите, что я использую термины «действие» и «представление» - да, я Я фанат MVC. Ситуация, в которой вы находитесь, типична для беспорядка, в который легко попасть, используя WebForms и элементы управления ASP.NET AJAX.)
Должно быть, я что-то упускаю. Почему ваша панель обновлений перезагружает всю страницу. Смысл панели обновлений - обновлять только то, что находится на этой панели, не так ли? Спасибо за объяснение. Думаю, мы говорим о репосте страницы, а не о перерисовке панели, как я думал.
Попробуйте отключить ViewState, особенно для сеток.
Для всех заинтересованных Я хочу добавить решение, как избавиться от данных Viewstate на стороне клиента. Это действительно дает серверу дополнительную нагрузку, но если вы находитесь в той же ситуации, что и я, и у вас много серверной мощности и вам нужно взять на себя нагрузку со стороны клиента, это хорошо.
Пусть все ваши страницы являются производными от BasePage.cs выглядит так
public class BasePage : System.Web.UI.Page
{
protected override void SavePageStateToPersistenceMedium(object viewState)
{
string vsKey = String.Format("VIEWSTATE_{0}_{1}_{2}", base.Session.SessionID, Request.RawUrl, DateTime.Now);
Session.Add(vsKey, viewState);
ClientScript.RegisterHiddenField("__VIEWSTATE_KEY", vsKey);
}
protected override object LoadPageStateFromPersistenceMedium()
{
string vsKey = Request.Form["__VIEWSTATE_KEY"];
return Session[vsKey];
}
}
Теперь у вас есть ключ к сеансу данных состояния просмотра вместо состояния просмотра в вашем коде ...
Для меня работает как шарм на веб-сайте с 1000-1200 посетителей в день.