簡體   English   中英

Apache + PHP Gd,緩存圖像范例

[英]Apache + php gd, caching images paradigm

請仔細閱讀本文,希望您能為我提供幫助;)

基本版本,像薄荷一樣---

我有一個php + gd腳本,可以從給定的文本生成圖像 ,如下所示:

[img src =“ renderImage.php?text = John Doe” alt =“ Jonn Doe” /]

輸出是一幅圖像,該圖像無需支付預格式化的文本。 假設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 = John Doe” alt =“瓊·多伊”

現在,高級版本---

問題有兩件事:

1.-使用更可定制的api修改php腳本:

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

2-當我們保存帶有“文本”占位符摘錄的圖像時(例如,renderImage.php?text = John Doe為John.png),當我們獲得具有類似“文本”占位符的圖像時,我們可以獲得類似的文件名例如:

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

[img src =“ renderImage.php?text = John Doe在這里!size = 24&font = tahoma&color = 333333” alt =“ Jonn Doe” /]

兩者都將另存為John.png!

* 最后,范式---*

我該如何解決? 我有一個解決方案:將圖像保存在php中,並帶有類似特定加密的名稱,如下所示:

佩佩斯·佩卡斯| 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 regex將其轉換為:

[img src =“ renderImage.php?text = John Doe&size = 24&font = arial&color = 333333” alt =“ Jonn Doe” /]

你怎么看?

為什么不對整個查詢字符串進行MD5哈希處理並為其命名圖像。 這將是查看該組合是否存在的相當簡單的方法。

如果允許完全任意的組合,將浪費大量的磁盤空間來緩存圖像。 怎樣才能阻止惡意用戶瀏覽所有40億種可能的顏色代碼,字體大小為1-200的字體,以及許多字體? 該“一個”映像最終將在驅動器上具有800+十億個映像。

特別是如果這是一個面向公眾的頁面。 寫一個蜘蛛擊中所有可能的組合將是微不足道的。 對於用戶而言,以最小的帶寬成本,他們就用盡了磁盤空間,並使CPU保持固定狀態以生成無用的映像。

@Marc B,我打算用它來生成標題[h1] [/ h1]

@niggles,這可能行得通,我還將文本屬性添加到哈希計算中,以使文本更加獨特。

隱藏用戶直接執行的腳本又如何呢?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM