На разрабатываемом мной сайте есть страница, на которой перечислены все пользователи сайта (и некоторая другая информация) в виде таблицы.Эта страница идентична всем, кто входит в систему (по крайней мере, в любой момент времени), за исключением одного различия - выделяется их собственная строка.Поэтому мне показалось, что это был бы идеальный кандидат для кеширования - нам не нужен каждый пользователь, который переходит на эту страницу, чтобы пересчитать и отобразить данные на странице, когда меняется только одна вещь.
Я пыталсячтобы справиться с этим, добавив к странице выходное кеширование и переместив подсветку строки таблицы в JavaScript (вызов jQuery), я надеялся, что эта страница будет кэшироваться, но JavaScript будет запускаться каждый раз, когда кто-нибудь нажимает на нее, что приводит кв их собственном ряду выделяются.Однако, похоже, это не так.Если я сначала захожу на сайт, моя строка подсвечивается.Затем, если кто-то еще попадет на страницу в течение срока действия кеша (на другом компьютере, поэтому это не вещь кеша браузера), он увидит страницу с выделенной строкой my , а не своей собственной, до тех пор, пока кеш не появитсяистекает - и тогда все видят выделенную строку того, кто бы ни нажал на следующую страницу, и так далее.Похоже, что он обслуживает кэшированную версию страницы после выполнения JavaScript, а не обслуживает кэшированную версию страницы и затем запускает JavaScript.
Есть лиспособ сделать то, что я пытаюсь сделать - кэшировать страницу, чтобы я не выполнял вызовы ASP.NET каждый раз, когда кто-то посещает страницу, но при каждом запуске страницы запускается новый JavaScript, поэтому выделяется другая строка?Или, если не с JavaScript, есть ли способ сделать это?Я думал об использовании setInterval для проверки выделения (и повторного выделения нужной строки) через регулярные промежутки времени, но это кажется излишним, так как это нужно делать только один раз после загрузки страницы, и никогда не повторять до тех пор, покастраница перезагружена.
Вот соответствующие части моего файла aspx:
<%@ OutputCache Duration="60" VaryByParam="none" %>
<script type="text/javascript">
jQuery(document).ready(function($) {
var isAuthenticated = ('<%= Context.User.Identity.IsAuthenticated %>' == 'True');
if (isAuthenticated) {
var owner = '<%= Context.User.Identity.Name %>';
$('#' + owner).css("background-color", "#bdf");
}
});
</script>
<table>
<tr>
<th>
Owner
</th>
...
</tr>
<% foreach (var item in Model.Items) { %>
<%= String.Format("<tr id=\"{0}\">", item.Owner) %>
<td>
<%= Html.Encode(item.Owner) %>
</td>
...
</tr>
<% } %>
</table>