2012-12-17 14 views
2

我開發在PHP(笨)網站框架,並要爲大家介紹的圖片上傳影像版本,這樣我可以把圖像緩存的優勢。最簡單的方法也只是對MD5算法的圖像,並使用它作爲文件名,但我不喜歡這種做法,原因如下:圖片版本 - 最好的辦法

1)不SEO上的圖像名稱友好

2 )md5散列似乎不必要的長 - 因此需要更大的數據庫 字段。

所以我使用的方法,如以下考慮:

用下劃線代替空格然後添加一個隨機生成的整數圖像的輸入的名稱啓動文件名,說8位數字。這意味着我必須通過該名稱檢查現有圖像,然後重新生成整數(如果存在的話)(但不太可能)。

想必我也必須爲每個圖像尺寸唯一的文件名,所以我在這裏想解決辦法是補充表示文件大小的前綴。

現在,我想這一次成功,因爲這將是一個痛苦的改變,一旦框架展開,所以我真的只是尋找輸入上

一)無論我的擔心是有道理的(特別是做文件名做SEO 任何事情,做數字的隨機字符串的長度 影響它)

b)是否有什麼我應該關心或檢查 與我提出的方法。

C)是否有更簡單的方法,也許這 產生更短的結果的哈希算法。

d)是否有已經是CI LIB在那裏,這是否?

謝謝您的意見和建議

+1

請確保您在IMG標籤中使用了您的ALT屬性 - 這對Google等人來說會更友好。人。比人類可讀的圖像文件名稱。當你將隨機的8位數字添加到原始文件名時,無論如何你都會接近與md5_file()散列相同的大小 - 而在當今世界,十幾個字節無論如何都不會產生明顯的差異。 –

+0

@BennyHill所以你說,只要我有填充alt標記(我充滿圖像簡短描述)文件名對SEO沒有影響?我同意關於明顯的差異評論,但我確實想知道當你在開發過程中說出了大約100件事情時,所有這些東西加起來的總和是多少 – WebweaverD

+0

我糾正了 - 谷歌說他們確實注意文件名(我基於我以前的對個人經驗發表評論 - 文件名從來沒有像我這樣):http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CDEQFjAA&url=http%3A%2F%2Fwww .google.com%2Fwebmasters%2Fdocs%2Fsearch-engine-optimization-starter-guide.pdf&ei = IC7PUJ2eFsKY2wWZuIH4BA&usg = AFQjCNEMj8KHxhxQz9cMLoMxMDiLdrAbJw&bvm = bv.1355325884,d.b2I&cad = rja –

回答

2

這回答了幾個你的問題:

用下劃線代替空格是不夠的,有一個乾淨的文件名作爲你需要檢查更多奇怪的字符,但你可以在CI的安全庫中使用sanitize_filename()方法:http://ellislab.com/codeigniter/user-guide/libraries/security.html

如果你確實想保留原始文件名,你的方法聽起來不錯。但是,通過簡單的增量循環檢查文件結尾的8位整數是否存在,可以用'-1','-2','-3'替換。

文件上傳庫的東西,你可以檢查出 - http://ellislab.com/codeigniter/user-guide/libraries/file_uploading.html。它很靈活,可以配置爲保留原始文件名。從Security lib獲取sanitize_filename()可以正確執行你所需要的操作。

在我所有的CI的應用程序,我總是使用加密文件名(此可選功能是通過CI文件上傳類提供)。同時,我可以將庫配置爲不覆蓋已經存在的文件,方法是向其添加一個數字(如果未使用加密),或者只給它另一個加密名稱(加密選項打開時)。我喜歡這種方式,因爲它保持文件名一致清潔(雖然長和不友好的搜索引擎優化,但ALT標籤給它更多的搜索引擎曝光)。

+0

謝謝你的建議。我會檢查清理文件名 - 這是否會添加下劃線以及刪除特殊字符?我已經在圖片上傳類中構建了我的上傳腳本,但我喜歡你建議的更簡單的版本。我也很好奇你爲什麼要加密你的文件名 - 你心目中的優勢是什麼? – WebweaverD

+0

說實話,在我選擇這種方法的時候,我發現加密是確保服務器上的文件名乾淨而一致的最簡單,最快捷的方式。我的客戶永遠都會上傳文件,並在地名上加上錯誤的字符,長度會從很短到很長!除此之外,圖像搜索性能從來都不是我需要付出很多關注的東西。不過,我知道這可能是一個問題,該項目需要良好的圖像搜索性能。 – Aidas