Как минимизировать XML с помощью PHP? - PullRequest
3 голосов
/ 08 августа 2011

У меня есть скрипт php, который читает XML-файл и модифицирует его с помощью SimpleXML. После того, как все изменения сделаны, скрипт сохраняет файл (размер ~ 2,8 мб).
Мне нужно загрузить этот XML-файл с помощью jQuery, и это занимает довольно много времени. Есть ли способ сжать / минимизировать мой XML-файл, чтобы сократить время загрузки в моем вызове AJAX.

UPDATE:

Файл XML содержит SVG для веб-страницы (большая метаболическая карта), поэтому он должен сохранять все содержимое XML-узлов.

Ответы [ 2 ]

7 голосов
/ 08 августа 2011

РЕДАКТИРОВАТЬ ОП пояснил, что речь идет о SVG-файле после Я написал свой ответ.


Не переносить 2,5 МБ XMLклиенту, если вам абсолютно не нужно все это на клиенте (и я сомневаюсь, что вы это делаете).Лучшей стратегией является использование XML-файла в качестве базы данных:

  • Создание прокси-страницы в PHP, которая принимает выражения XPath и возвращает только соответствующие части XML.
  • Используйте jQuery для выдачи Ajax-запросов, которые выбирают эти релевантные части, когда это становится необходимым (например, когда пользователь запускает действие).
  • Используйте memcached или другой метод кэширования длязапретите полный синтаксический анализ XML на сервере для каждого запроса.
  • В зависимости от профиля использования вашего приложения используйте memcached для кэширования отдельных ответов Ajax.Кроме того, установите заголовки кэширования HTTP, чтобы клиент не перезапрашивал вещи, которые все еще действительны.
  • Включите сжатие gzip для ответов PHP Ajax, чтобы сэкономить время отклика и пропускную способность.

Это немного больше работы таким образом.но это увеличит скорость - вероятно, на несколько порядков.

1 голос
/ 08 августа 2011

Не переносить 2,5 МБ XML на клиент - точка.Должен быть лучший способ сделать то, что вы пытаетесь сделать.Возможно, вы можете добавить нумерацию страниц, чтобы вам не приходилось загружать все результаты одновременно - вместо этого вы можете отправлять клиенту примерно 20 или около того по мере необходимости.

Во-вторых, не используйте XML - используйтеJSON, поскольку он будет как минимум на 20% меньше и в собственном формате для JavaScript, что сократит обработку на стороне клиента.

...