Apache + php gd, парадигма кэширования изображений - PullRequest
0 голосов
/ 09 декабря 2010

Пожалуйста, прочитайте это внимательно, надеюсь, вы можете помочь мне с моей парадигмой;)

Базовая версия, работает как мята - - -

У меня естьскрипт php + gd, который генерирует изображение из заданного текста , например:

[img src = "renderImage.php? text = Джон Доу" alt = "Джонн Доу" /]

В результате получается изображение, отображающее на нем предварительно отформатированный текст.Допустим, 12px arial # 000000

Затем я добавляю apache mod_rewrite в уравнение, чтобы сервер пытался получить доступ к кешированному изображению и, если он не существовал, сгенерировать его с помощью php-скрипта, чтобы его сгенерировать(и сохраняется как ¨John.png¨ ):

[img src = "/ images / cached / John Doe 2" alt = "John Doe 2" /] <- это может быть фактически преобразовано в -> [img src = "renderImage.php? Text = Джон Доу" alt = "Джонн Доу" /]

Сейчас, расширенная версия - - -

Проблема состоит из двух вещей:

1. -Изменение скрипта php с более настраиваемым API:

[img src = "renderImage.php? text = John Doe & size = 36 & font = verdana & color = FFFFFF" alt = "Jonn Doe" /]

2.-Поскольку мы сохраняем изображения с выдержкойих заполнителя «text» (например, renderImage.php? text = John Doe as John.png), когда мы получаем изображения с аналогичными заполнителями «text», мы можем получить похожие имена файлов, например:

[img src = "renderImage.php? text = Джон Доу & size = 36 & font = verdana & color = FFFFFF "alt =" Джонн Доу "/]

[img src =" renderImage.php? text = Джон Доу был здесь! size = 24 & font = tahoma & color = 333333 "alt =" Джонн Доу "/]

Оба будут сохранены как John.png!

* Наконец, парадигма - - - *

Как мне это исправить?я пришел к одному решению: сохранение изображений в php с определенными зашифрованными именами, такими как:

Pepe pecas | 31.12.2010 | 9: 57 | 72 / arial / FFFFFF.png

или

Pepe pecas | 31122010 | 9: 57 | 72arialFFFFFF.png

И затем получить доступ к ним в разметке как:

* [img src = "/ images / cached / JohnDoe_24arial333333.png" alt = "John Doe" /] *

, который будет преобразован apache с использованием регулярного выражения mod_rewrite в:

[img src = "renderImage.php? Text = Джон Доу & size = 24 & font = arial & color = 333333" alt = "Джонн Доу" /]

ЧТО ДЕЛАТЬВЫ ДУМАЕТЕ?

Ответы [ 3 ]

2 голосов
/ 09 декабря 2010

Почему бы не сделать MD5-хеш всей строки запроса и назвать это изображение. Это был бы довольно простой способ проверить, существует ли такая комбинация.

0 голосов
/ 09 декабря 2010

@ Marc B, я собираюсь использовать его для генерации заголовков [h1] [/ h1]

@ niggles, ну, это может сработать, я бы также добавил свойства текста в вычисление хешачтобы сделать тексты более уникальными.

А как насчет того, чтобы скрыть скрипт от непосредственного выполнения пользователями?

0 голосов
/ 09 декабря 2010

Вы потратите чертовски много места на диске, кешируя образы, если разрешите совершенно произвольные комбинации.Что мешает злоумышленнику циклически просмотреть все 4 миллиарда возможных цветовых кодов, размеры шрифтов 1–200 и сколько угодно шрифтов?Это «одно» изображение в конечном итоге будет иметь более 800 миллиардов изображений на вашем диске.

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

...