2012-06-07 39 views
2

Zend/Cache/Core.php具有_validateIdOrTag函數,該函數將密鑰中允許的字符限制爲[a-zA-Z0-9_]在Zend_cache中禁用對Memcache密鑰的合法性檢查

問題1:documentation下面的引用是什麼意思?

注意:這個後端,「標籤」是不支持 時刻爲「doNotTestCacheValidity =真」的說法。

如果是這樣,問題2:爲什麼要施加這樣的限制? (使用-/等字符來緩存URL內容非常常見,memcache pecl擴展名確實允許這些字符)?

如果不是,問題3:是否有一個選項可以禁用該限制? (我找不到)?

回答

1

1.標籤

標籤讓你組緩存的項目彙集成集和變異根據標籤,這些套。例如,在博客中,您可以緩存所有帖子並使用"post"對其進行標記。然後,您可以同時刪除標記爲"post"的所有項目。但是,目前不支持memcache。

2鍵限制

的限制是不是在緩存中的內容,但使用的密鑰來訪問它們。因此,您可以存儲您想要的任何內容,URL,特殊字符等。您只需確保您的密鑰不包含它們。

如果你關心它,只需md5你的密鑰以確保它是一個有效的密鑰並使用它。

+0

感謝您對「標籤」的解釋,聽起來非常方便。關於'keys',我可能還不夠清楚:想法是使用'URL'作爲關鍵字,例如直接從您的web服務器提供內容(http://www.igvita.com/2008/02/11/nginx的 - 和 - 的memcached-A-400-升壓/)。我仍然不明白爲什麼'Zend_Cache'強加這樣的限制,'memcached'完全可以用非字母數字鍵找到,所以爲什麼要這樣做。 – Max

+0

關於'md5':解決方法我不願意將其用於碰撞風險,這會導致應用程序對不同的內容類型使用相同的密鑰。我寧願使用'base64'或其他非散列方法,但在我的情況下,如果我無法擺脫這些限制,我根本不會使用'Zend_Cache'並使用'Pecl memcache'而不用重寫源代碼),能夠在密鑰中使用非字母數字字符是非常有價值的。 – Max