我們目前使用用PHP編寫的圖像調整器。調整大小腳本利用緩存,並將生成的調整大小的圖像寫入緩存目錄(正確地命名爲cache/
)。基於文件存在與其他名稱的重寫規則
的過程是這樣的重寫URL,例如:
domain.com/img/250x250/some-image.jpg
將被改寫到:
domain.com/image.php?width=250&height=250&src=some-image.jpg&function=resizeCrop
裏面image.php
,我們做一個檢查,看看是否匹配文件在cache/
dir中調整大小。所有緩存的圖像存儲與cachFunctionWidth_height_originalName
的名稱,所以對於給定的例子裏面cache/
生成的圖像文件將被命名爲resizecrop250_250_some-image.jpg
目前,我們正在利用PHP的fpassthru()
功能,輸出的文件,如果它的瀏覽器存在。如果不是,我們使用GD函數和算法的組合將文件輸出到瀏覽器。
我的問題是,如果使用HTACCESS(它是Linux服務器)在cache
目錄中存在已調整大小的圖像,是否可以完全繞過image.php
。本質上,我們需要在重寫之前檢查一個混雜的名字形式。
例如,下面是我們想達到什麼樣的一些僞代碼,但我不認爲這是可能的:
- 用戶要求文件> domain.com/img/250x250/some- image.jpg的
- 檢查文件是否存在
cache/resizecrop250_250_some-image.jpg
- 如果是的話,重寫
cache/resizecrop250_250_some-image.jpg
- 如果沒有,改寫爲
domain.com/image.php?width=250&height=250&src=some-image.jpg&function=resizeCrop
如果這不可能通過HTACCESS,任何其他建議也將受到歡迎。
'我們做一個檢查,以查看文件是否調整大小相匹配的緩存/'爲什麼不是'/ IMG/250×/一些-image.jpg'緩存文件的位置?使用php而不是no-php幾乎肯定是次優解決方案,除非有一個未提到的要求 – AD7six