Memcache сжал содержимое с помощью php ob_gzhandler - PullRequest
1 голос
/ 04 апреля 2009

Недавно я реализовал gzipping своего контента с помощью функции php ob_gzhandler, которая делает вещи действительно простыми.

Я сейчас пытаюсь добавить этот контент в свою memcache, и надеялся, что есть и простой способ сделать это, но я не смог найти в Интернете ничего о том, как это сделать.

В прошлом я использовал только memcache для хранения данных, которые содержались в переменной, но с помощью ob_gzhandler у меня нет переменной с данными в ней. Так что я, к сожалению, даже не знаю, с чего начать.

Спасибо Пит

----- Редактировать для получения дополнительной информации ------------------------- Как прокомментировал Коди ниже, очевидно, мой вопрос был / является неопределенным. Извините за это, я пытаюсь дать как можно больше информации, но я действительно немного растерялся в этом процессе.

Когда я ранее использовал memcache, я проверил, существуют ли данные в memcache на основе хеша запроса url. Если было совпадение, я брал кэшированные данные. Если нет, то я бы сделал страницу и сохранил ее в кеше.

Теперь я пытаюсь сделать то же самое, но с данными в формате gzip, используя php ob_gzhandler.

Но, как заявил Кьяран, более разумно было бы просто принять меры по сохранению незашифрованных данных.

В то же время было бы лучше хранить gzip-версию, так как она меньше по размеру, чтобы я мог хранить больше в кеше, и не совместимы ли gzip почти со всеми браузерами?

Ответы [ 3 ]

1 голос
/ 04 апреля 2009

ob_gzhandler () вернет либо строку, либо false, в зависимости от того, поддерживает ли браузер клиента gzip, deflate или нет кодирования. Вы, вероятно, используете эту функцию через ob_start () или подобное.

Поскольку результат для каждого клиента различен, попытка кэшировать результат не является хорошей идеей (т. Е. В некоторых случаях это будет FALSE, в некоторых случаях это будет закодированный ответ «deflate», а в другие это будет ответ в кодировке gzip).

Казалось бы, имеет больше смысла кешировать содержимое gzip-файла и принимать его за то, чтобы повторно сжимать каждый запрос - на практике это не должно быть огромными накладными расходами.

1 голос
/ 04 апреля 2009

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

Это правильно?

В конечном счете, ваш вопрос неопределенный и не содержит достаточно информации.

0 голосов
/ 04 апреля 2009

Если речь идет об уменьшении количества байтов, передаваемых в хранилище, существует ряд клиентов, которые могут сжимать данные перед их отправкой в ​​memcache - в зависимости от размера (сжатие 50 КБ полезно, 5 байтов, не так много) , Как говорит @Ciaran, накладные расходы на последующее повторное сжатие для окончательной доставки - если требуется - не так уж и велики.

...