HttpHandler против HttpModule для переопределения функции рендеринга на странице ASP.NET - PullRequest
0 голосов
/ 27 января 2011

Я пытаюсь найти все теги CSS на сгенерированной странице

Итак, насколько я понимаю, есть два способа сделать это ...

  1. Переопределить функцию непосредственно в ASP.NETpage и вставьте один тег ссылки в HTML, ссылающийся на некоторую страницу ashx (css.ashx) (HttpHandler), которая затем прочитает все файлы CSS и отправит их все вместе в ответе как один.Сделайте то же самое переопределение для всех остальных страниц.

ИЛИ

  1. Используйте HttpModule, который использует тот же подход, но не требует постоянного переопределения функции Render на каждом ASPСтраница .NET.

Какие преимущества / недостатки у каждого из них и что вы, ребята, рекомендуете?

Спасибо

1 Ответ

1 голос
/ 27 января 2011

Я думаю, что вы пытаетесь решить, имея один запрос на файл CSS, а не несколько запросов на все файлы CSS.

Я не думаю, что какое-либо из ваших решений сработает,Если я понимаю, что ты делаешь.Если вы захватите все запрошенные файлы и добавите одну ссылку для обработки агрегированной версии, как вы решите, что фактически помещается в обработчик при выполнении запроса?

Лучшим решением было бы добавить однуссылка на вашей главной странице на обработчик.Затем ваш обработчик собирает CSS-файлы, сжимает их, кэширует и выводит.

Редактировать: Чтобы ответить на комментарий: "Я минимизирую в процессе сборки ... яиспользовать сжатие IIS ... агрегированная версия выглядит примерно так: css.ashx? file1.css, file2.css, someOtherfile.css файлы разделяются запятыми. И я справляюсь с логикой ... Тогда я могу добавить кеширование иПользовательские заголовки в ответе .... Получить? "

На мой взгляд.Кажется немного глупым создавать эту ссылку при каждом запросе страницы.Это кажется ненужным.Идея в порядке, и это то, что я делаю (по-разному), но я не согласен с вашим подходом.

Я видел посты в блогах, в которых подробно описан процесс минимизации процесса сборки, что хорошо, но если вам нужноЧтобы внести незначительные изменения в CSS, вы не можете просто быстро перейти на сервер, изменить значение и покончить с этим, вам на самом деле нужно снова пройти процесс сборки и загрузить один файл.

Также я не думаю, что иметь все ваши файлы в качестве параметров - это хорошая идея, вы создаете кучу разных URL для каждой страницы.

Способ, которым я делаю это, - создание одного обработчика с 2значения строки запроса.Ключ и версия.

Ключ находится в наборе приложений web.config с разделенной запятыми строкой CSS-файлов для включения.

Запрос к обработчику сделан, он ищетключ / версия в кеше, если он не существует, он получает значение из файла web.config, загружает все файлы, минимизирует их, сжимает и кэширует.Добавить все заголовки и вывести запрос.

Редактировать 2: Другой способ, которым вы можете сделать это, это просто иметь одну ссылку и использовать метод объединения / минификации в процессе сборки.Даже если вы объединяете несколько CSS-файлов, не используемых на домашней странице, они должны быть относительно небольшими, и, поскольку они кэшируются, вы ускоряете запрос на запрос второй страницы.

В вашем сценарииВы требуете, чтобы браузер отправил запрос на уже имеющиеся у него CSS-файлы, а также дополнительные CSS-файлы, которые вы, возможно, включили на вторую страницу.(если это имеет смысл)

Домашняя страница - css.ashx? files = css1.css, css2.css, css3.cssAboutPage - css.ashx? Files = css1.css, css3.css

Это бессмысленно, поскольку вы могли бы повторно использовать css с домашней страницы для отображения страницы about.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...