Как реализовать сжатие GZip в ASP.NET?

Не нужно использовать Beautiful Soup. Просто проверьте, присутствует ли в тексте <readmore/> или какая-либо другая подстрока, и разделите на ней, или если она не разделена на новую строку.

from markupsafe import Markup

@app.template_filter()
def snippet(value):
    for sep in ('<readmore/>', '<br/>', '<br>', '</p>'):
        if sep in value:
            break
    else:
        sep = '\n'

    return Markup(value.split(sep, 1)[0])
80
задан Prashant 16 February 2009 в 05:16
поделиться

4 ответа

Для сжатия JS & CSS регистрирует Вас, на самом деле должны обработать это на уровне IIS, так как эти файлы представляются непосредственно без времени выполнения ASP.NET.

Вы могли сделать JSX & расширение CSSX, отображающееся в IIS на aspnet_isapi.dll и затем, использует в своих интересах Ваш почтовый индекс, но IIS, вероятно, сделает лучшее задание этого для Вас.

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

Принятый закодированный параметр кэша там так, чтобы кэшированная версия gzipped содержания не была отправлена в браузер, который запросил только текст/HTML.

28
ответ дан Ben Scheirman 5 November 2019 в 17:44
поделиться

Отвечать на Ваш последний вопрос. Те две строки устанавливают HTTP-заголовки для ответа, переданного обратно браузеру. Content-Encoding говорит браузеру, что ответ кодируется как gzip, и он должен декодироваться. Последняя строка добавляет Accept-Encoding к эти , Варьируются заголовок . С этим браузер или прокси могут определить, был ли ответ уникален или под влиянием определенных других заголовков, и скорректируйте их кэширование.

2
ответ дан gix 5 November 2019 в 17:44
поделиться

В IIS7 все запросы переходят к .NET, таким образом, необходимо было бы создать HttpModule, который добавил те заголовки ко всем ответам.

Без IIS7, и на общем хостинге, у Вас был бы к creare обработчик, который отобразил расширение файла .NET, которое Вы не используете (как .asmx), и в web.config указывают, что .asmx файлы переходят к Вашему HttpHandler, который установлен переписать путь к .jpg или безотносительно и установить заголовок там также.

3
ответ дан missaghi 24 November 2019 в 10:00
поделиться

Причина, по которой он только сжимает ваш файл ASPX, заключается в том, что код, который вы написали, только встроен в файл ASPX. Файл ASPX - это отдельный запрос от любого связанного содержимого. Таким образом, если у вас есть страница ASPX, которая содержит:

<img src="www.example.com\exampleimg.jpg" alt="example" />

Это будет составлять 2 запроса (находки DNS в сторону) из вашего браузера на ресурсы:

  1. для страницы ASPX и
  2. для изображения, содержащегося на странице ASPX Отказ

Каждый запрос имеет его собственный ответ пара. Код, который вы разместили, подключается только к потоку ответа ASPX, поэтому сжаты только ваша страница ASPX. Линии 1 и 2 Вашего опубликованного кода по существу приводят к нормальному потоку ответа страницы и впрыскивают код «среднего человека», который в этом случае ест и сжимает нормальный выходной поток с помощью GZIP по потоку и отправляет свой провод вместо этого.

Линии 3 и 4 устанавливают заголовки ответа. Все HTTP-запросы и ответы имеют заголовки, которые отправляются до контента. Они настроили запрос / ответ, чтобы сервер и клиент знали, что отправляется и как.

В этом случае строка 3 является информирование браузера клиента о том, что поток ответа сжимается через GZIP и, следовательно, необходимо определить Client Client Browser перед отображением.

и строка 4 просто включается заголовка кодирования приема ответа. В противном случае это было бы отсутствовало в ответ.

Существуют подключаемые модули, которые вы можете записать / получить, что позволит вам сжать многолетний тип MIME, например, * .js и * .css, но вы лучше просто используете встроенные функции сжатия IIS.

Вы еще не сказали, какой Verson IIS вы используете, но если бы это был IIS 7.0, потребуется, чтобы вы включали что-то вроде следующего в в разделе «Интернет». Конфигурация файла:

<httpCompression> 
  <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" /> 
 <staticTypes>
         <add mimeType="text/*" enabled="true" />
      </staticTypes>
</httpCompression> 
<urlCompression doStaticCompression="true" /> 

..

Ричард

11
ответ дан 24 November 2019 в 10:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: