Одна из функций в моем файле views.py в django имеет следующий код:
from lxml import etree
f = etree.parse("path/to/file/k2.xml")
for item in charList:
first += f.xpath(u"//character[item='"+item+"']/path/to/entry[@type='on']/text()")
second += f.xpath(u"//character[item='"+item+"']/path/to/entry[@type='off']/text()")
Это загружает XML-файл 14 МБ, просматривает, пока не находит нужный элемент и добавляет два значения к двумпеременные с использованием XPath.
Это действительно медленно - от 5 до 6 секунд, что недопустимо для сайта с высоким трафиком.
Django учит, что вам не нужно обращаться к базе данных для каждого запроса, а вместо этого иметь постоянное соединение в файле settings.py - но это при использовании SQL, а не XML.
Есть ли какой-нибудь способ ускорить это, возможно, всегда имея в памяти файл xml?