Dev (Back & Front)ARTIGO

Django – Obtendo mais performance com HTML Spaceless

Uma das formas de otimização de páginas web é através da redução do seu tempo de carregamento. Um exemplo de deste tipo de otimização é
removendo excessivo espaços em branco do código de sua página.

Django possui alguns meios para isto, e uma deles é através da tag de template {% spaceless %} [1], que remove todos os espaços em branco entre tags de um trecho especificado. Porém, existem algumas restrições em relação à  tag “spaceless”, pois para quem a usa para esta finalidade, não poderá usa-lá caso esteja utilizando outro sistema de template.

Com isso, uma das formas de se fazer  “spaceless” é através da criação de uma middleware [2], que utiliza a função “strip_spaces_between_tags” para remover espaços entre tags HTML. Com isso, sobrescreve-se o conteúdo do objeto “response” (resposta ), que é passado para o método de middleware process_response [3]  e logo em seguida é retornado o objeto response com os espaços removidos.

Segue um exemplo de middleware:

from django.utils.html import strip_spaces_between_tags as short<br /><br />class SpacelessMiddleware(object):<br />def process_response(self, request, response):<br />if 'text/html' in response['Content-Type']:<br />response.content = short(response.content)<br />return response

Obs: Se estiver utilizando middleware de cache, lembre-se que a ordem das middlewares influencia. Então, verifique se esta middleware estará antes da middleware de cache.

Depois disto, no arquivo settings, adicionar em  MIDDLEWARE_CLASSES, o caminho à sua middleware.

Exemplo:

MIDDLEWARE_CLASSES = (<br />'django.middleware.common.CommonMiddleware',<br />'django.contrib.sessions.middleware.SessionMiddleware',<br />'django.contrib.auth.middleware.AuthenticationMiddleware',<br />'projeto.minhas_middlewares.SpacelessMiddleware',<br />)

Com isto, todos os espaços entre tags serão removidos, o que lhes dará relativamente a redução do tamanho final do arquivo.

[1] = http://docs.djangoproject.com/en/dev/ref/templates/builtins/#spaceless
[2] = http://docs.djangoproject.com/en/dev/topics/http/middleware/#topics-http-middleware
[3] = http://docs.djangoproject.com/en/dev/topics/http/middleware/#process-response

Fonte: http://www.davidcramer.net/code/369/spaceless-html-in-django.html

é web developer da empresa S1 Soluções Inteligentes, que atua há quase dois anos no desenvolvimento web utilizando a tecnologia python como principal ferramenta de trabalho. Tem se dedicado ao estudo do framework web Django, que hoje se destaca por permitir o desenvolvimento rápido, fácil e limpo de aplicações web.

Ver perfil