Как я могу сжать изображения без использования .htaccess? - PullRequest
1 голос
/ 17 февраля 2011

Godaddy не включит mod_gzip для меня, поэтому я должен использовать заголовки, такие как:

<?php 
ob_start ("ob_gzhandler");
header("Content-type: text/css; charset: UTF-8");
header("Cache-Control: must-revalidate");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
$offset = 60 * 60 * 24 * 7;
$ExpStr = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";
gmdate("D, d M Y H:i:s",
time() + $offset) . " GMT";
header($ExpStr);
?>

В этом случае это будет для CSS-файлов

В любом случае, как я могу использовать это с моими изображениями? Я имею в виду, что сделать image: image.php и поместить этот код сверху, но использование header("Content-type: image/png; charset: UTF-8"); не работает, дайте мне знать.

Ответы [ 2 ]

8 голосов
/ 17 февраля 2011

GZipping изображений не стоит. Сжатие ничтожно или даже отрицательно, потому что форматы изображений уже сжимают довольно оптимальную работу. Попробуйте сжать файл JPG, чтобы понять, что я имею в виду.

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

Правила производительности Yahoo подтверждают это:

Файлы изображений и PDF не должны быть сжаты, поскольку они уже сжаты. Попытка сжать их не только приводит к потере ресурсов процессора, но и потенциально может увеличить размер файла.

также помните, что при выполнении сжатия в PHP процесс PHP запускается каждый раз, когда поступает запрос. Возможно, лучше вообще не сжимать статические ресурсы (если вы не платите много денег за трафик). Как правило, сжатие должно быть работой веб-сервера, а не PHP.

2 голосов
/ 17 февраля 2011

Как правило, сжатие изображений в формате GIF, PNG или JPEG не даст увеличения более чем на пару процентов (на самом деле «сжатый» файл может быть больше исходного).Если вы действительно хотите сделать это на обычном php, используйте mod_rewrite (или измененные URL-адреса изображений), чтобы перенаправить URL-адреса в скрипт php.Затем вывод изображения, например

<?php
header('Content-Type:image/png');
echo file_get_contents('img.php');

, работает (в своих экспериментах вы, вероятно, случайно добавили пробелы в двоичное изображение PNG и тем самым разбили его).

...