Кэширование данных может быть реализовано, но это не легко.Вы должны определить на стороне сервера некоторые заголовки HTTP на основе выбранной стратегии кэширования .Например, вы можете использовать max-age заголовка HTTP "Cache-Control", например
Cache-Control: max-age=60
, что означает, что ответ сервера должен кэшироваться в течение 60 секунд на клиенте.Если вы планируете использовать это, вам нужно определить дополнительный параметр prmNames:{nd:null}
jqGrid, который удалит отправку параметра nd
с отметкой времени, включенной в любой запрос к серверу.После выполнения этих шагов все ajax-запросы, используемые jqGrid, будут получены из локального кэша в течение интервала времени (60 секунд).
Реализация кэширования на стороне сервера со стратегией, более сложной, так как возможно фиксированное время кэшированияв отношении ETags (теги сущностей).Это моя любимая стратегия, но ее реализация относительно сложна (подробности см. Руководство по лучшему способу сохранения параметров фильтрации при использовании ASP.NET MVC 2 и Обработка параллелизма транзакции Sql ).
Если способ с кэшированием данных вы не сможете использовать (по ряду причин), я бы рекомендовал вам в качестве альтернативы следующие два варианта:
- созданиеgrid на той же странице , что и кнопки и другие фильтры из формы, которая определяет параметры jqGrid (см. Как фильтровать данные jqGrid, НЕ используя встроенное поле поиска / фильтра ).
- «Перекраска» страницы с формой относительно
jQuery.Remove()
или jQuery.Empty()
и новым ajax
запросом.Например, с jQuery("body").Empty()
или jQuery("div#main").Empty()
, где <div id="main">
находится где-то сверху тела.Затем вы можете заполнить тело страницы (или div с id = "main") вызовом, подобным jQuery("body").load("newPage.htm")
или jQuery("div#main").load("newPage.jsp")
.
Преимущество этих альтернатив в том, что вы будете оставайтесь на той же странице и все данные JavaScript могут быть использованы.Например, вы можете получить старые данные jqGrid из параметра «data», если ваша сетка использует параметр «loadonce: true», а затем создать новый jqGrid, используя значение данных в качестве параметра «data» нового jqGrid.