Я ненавижу сайты с бесконечной прокруткой, в основном потому, что они используют всю мою оперативную память. Есть ли способ убедить сайты не загружаться таким образом? Может быть, расширение для браузера, которое превращает его обратно в отдельные страницы? Способ заставить браузер сообщать, что он не поддерживает его? Что-то, что я мог удалить?
3 ответа
Есть несколько убедительных причин, почему ответ "нет".
Некоторые сайты добавляют контент динамически (например, Facebook), когда вы прокручиваете страницу вниз, так что это, вероятно, те случаи, которые вы не выполняете
Другие сайты добавляют контент динамически, независимо от взаимодействия с пользователем (например, прокрутка). В принципе, это может быть как-то решено путем предотвращения / ограничения ответственных веб-соединений после заполнения страницы. Однако попытка включить это прозрачно в случае, если вы решите перейти на "следующую страницу", вероятно, обречена, так как можно ожидать, что процессы прекратили работу из-за тайм-аутов.
С другой стороны, есть страницы, которые просто выводят много содержимого страницы, возможно, даже статического содержимого. Клиент может просто разорвать соединение, как только станет достаточно для отображения экрана данных, но это означает, что для перехода на "следующую страницу" вам придется начать загрузку страницы заново. Со многими страницами это может привести к большой трате пропускной способности для бесполезных перезагрузок; также это может быть нежелательно в случае побочных эффектов (таких как онлайн-заказы). В качестве альтернативы клиент может ограничить TCP-соединение, пока вы не решите перейти на "следующую страницу". Я боюсь, что веб-серверы не будут счастливы (и потеряют ваше соединение) с таким решением, потому что оно тратит их ресурсы. Более того, если вы хотите иметь возможность пролистывать предыдущие страницы, у вас все еще есть проблема с необходимостью сохранять весь контент в ОЗУ или в кеше.
Еще одна альтернатива - полностью загрузить страницу и просто отобразить ее по страницам. Но это эквивалентно тому, что у вас есть сейчас: пролистать длинную страницу. Вы можете только надеяться, что большая часть занимаемой памяти находится на диске, а не в ОЗУ, поэтому, возможно, эта опция не слишком надумана.
Все это не учитывает того, что общий макет может потребовать более или менее полного содержимого страницы, чтобы решить, как должны выглядеть "страницы" или где разбивать страницы.
Единственный реально осуществимый способ, который я вижу, - это использовать механизмы, позволяющие отображать постраничное несохраняемое содержимое априорно: использовать media:print
стиль печати , что по сути равносильно загрузке страницы и предварительному просмотру. Вы, возможно, уже заметили, что многие страницы отображаются ужасно при печати или предварительном просмотре, даже если веб-разработчикам доступно множество вариантов стилей для решения конкретных задач, так что представьте, что вы получите.
Однако, если использовать это как (например, Firefox) дополнение, рабочий процесс будет таким, что страница загружается, и затем будет отображаться как в предварительном просмотре parint. Без глубокого проникновения в недра браузера это все равно приведет к тому, что вся страница будет храниться в оперативной памяти, а не то, что вам нужно.
Вы можете использовать AdBlock/uBlock, чтобы заблокировать код, который загружает следующую страницу. Это грубо, но работает, например:
! Forbes infinite scroll (and all other AJAX) https://www.reddit.com/r/web_design/comments/4i6bpd/never_ending_scroll_down_on_some_websites_is_it_a/d2w3qj2
||forbes.com$xmlhttprequest
Я тоже пробовал это, но они не работали:
! Forbes infinite scroll https://adblockplus.org/forum/viewtopic.php?t=26583
||i.forbesimg.com/assets/img/loading_spinners/*
||forbesimg.com/scripts/combined/js/article-responsive*
! Bloomberg infinite scroll http://www.wilderssecurity.com/threads/ublock-origin-stopping-infinite-scrolling.379726/#post-2525404
bloomberg.com http://assets.bwbx.io/business/public/javascripts/application script block
Но кто-то, кто хорош с правилами фильтра Adblock (не я), мог бы разработать блок-лист для блокировки бесконечной прокрутки на многих сайтах.
Или используйте дополнения или пользовательские скрипты, чтобы переопределить это поведение и заменить его более удобным для пользователя.
Этот вид дополнения отключает его в Tumblr, например: https://addons.mozilla.org/en-US/firefox/addon/anti-tumblr-infinite-scroll/ Он по-прежнему автоматически загружает новую страницу, когда вы достигаете нижняя часть, которая раздражает, но она заменяет текущую страницу вместо ее добавления, и демонстрирует подтверждение концепции того, что может существовать.
Я попытался создать список здесь, но я не эксперт по правилам Adblock:
https://gist.github.com/endolith/72ac5e69e037be02b118adbedcdeac59/
При использовании Firefox можно использовать дополнение Kill Infinite Scroll, которое в настоящее время имеет версию 0.79.4.
Это дополнение описано как:
Это отключает бесконечную прокрутку, используемую Tumblr и другими сайтами. В частности, он наносит ущерб сценариям с http://www.infinite-scroll.com (версии 1.4 и 2.0). В отличие от дополнения Anti Tumblr Infinite Scroll, оно просто восстанавливает оригинальные кнопки Next и Prev.
Я считаю, что восстановление кнопок «Далее» и «Предыдущий» предпочтительнее, чем просто уничтожение прокрутки, так как прокрутку можно продолжать, но использование памяти останется практически неизменным.
В противном случае, чтобы уничтожить свиток, я предлагаю вместо использования Adblock лучше использовать расширение, такое как NoScript, чтобы запретить весь javascript на всех сайтах, кроме тех, которым вы доверяете (или, по крайней мере, запретить сторонний javascript). Это на самом деле защитный механизм, который каждый должен использовать против вирусов, передаваемых через браузер. Всякий раз, когда вы хотите временно повторно включить прокрутку, вы можете сделать это, временно разрешив сценарии (которые остаются в силе до закрытия браузера).