Django, python e web - hersonls

HERSONLS django, python e web

Django - Performance com HTML Spaceless

Uma das formas de optimização de paginas web é através da redução do seu tempo de carregamento. Um exemplo de deste tipo de optimização é removendo excessivos espaços em branco do código de sua pagina.

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. Porem, existe 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

class SpacelessMiddleware(object):
def process_response(self, request, response):
if 'text/html' in response['Content-Type']:
response.content = short(response.content)
return response

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

Exemplo:

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


    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, para que seja feito cache com espaços removidos.

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

.

0Comentarios

Deixe seu comentario