Какой именно запрос выполняется ещё раз? Что у вас в raw(). И вообще, опишите более конкретно. Категории можно подцепить с помощью prefetch_related (или select_related, в зависимости отситуации)
1600 — это уже нормально для оптимизации лайков, согласен :)
1. Наверняка из 1600 только процентов 15 авторизованные, можно кешировать нгинксом только анонимусов. Для зарегистрированных всё равно не накешируешься, если только блоками.
2. Кешированием на клиенте ИМХО отпадает сразу из-за невозможности инвалидации. Проголосуете в одном браузере, а на другом получите ошибку повторного голосования.
NeX, как автор Jevix-а с полной уверенностью могу заявить, что решить проблемы удаётся не все. И это сильно забивает мой почтовый ящик :)
Вначале мне казалась всё просто, и я заявил что сейчас напишу PHP-версию с конечным автоматом за пару часов. Я потратил больше недели, а потом дорабатывал больше года…
И только спустя несколько лет пришёл к выводу, что пользовательский ввод HTML — это просто неверное решение. Однако, во многих случаях это лучший компромис между тем что есть и ещё не изобретённым, новым способом ввода форматированного текста.
На самом деле, мне кажется нужен. Могу сказать это после ноголетнего опыта Jevix-а (PHP-версия), который используется на Хабре и множестве других проектов. Так просто все проблемы не объснишь, но попробую…
Помимо форматирования текста в реальных проектах всегда возникает потребность вставки чего-то эадого: ссылку на пост сайта, профиль пользователя, видео, код, музыкальный трек, а, порою чего-то ещё более сложного. При этом нужно написать такой парсер, который бы не давал вставлять XSS или портить разметку сайта.
Если при этом мы используем какой-то язык разметки отличный от HTML, всё просто: весь HTML эскейпится, а код разметки превращается в HTML 100% безопасный, валидный и разрешённый. В противном случае нужно:
Отвалидировать полученный битый HTML в автоматическом режиме (нельзя кричать пользователю, что он что-то не закрыл, или нельзя вставлять <p> в <ul>
Отфильтровать запрещённые теги, атрибуты и конструкции в которые можно поместить XSS. Добавить какие-то обязательны атрибуты (например target="_blank")
Оттипографировать текст (при этом недопуская чего-то типа src = «/img.jpg» если пользователь забыл поставить скобочку в теге <img>).
Преобразовать служебные теги типа <hh user=""> в HTML
В общем, проблем с этим куча. Но не используя HTML мы лишаемся возможностей WYSIWYG-а, что для непродвинутых пользователей не особо приятно. Что-то с этим надо делать. У меня давно в голове витает идея создать какой-то принципиально новый редактор без content-editable, что-то немного напоминающее Google-формы (добавить блок текста, добавить блок кода, добавить список, список — это форма с добавляемыми, удаляемыми и сортируемыми полями и т.д.). Автор WysiBB пошёл другим путём, но мне кажется это всё равно очень полезное начинание.
Мне скорость гораздо менее важна чем надёжность. Так как обрабатывать буду пользовательский контент (посты, комменты).
А насколько lxml хуже в плане обработки невалидного html? И знаете ли вы в каком там виде Beautiful Soap /html5lib парссеры — это просто урезаная версия существующих библиотек? Она поддерживается в актуальном состоянии или нет? Или нужно для их использования ставить эти либы?
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.