题
我编写了一个插件,在我的博客中的每个链接前面放置一个(谷歌)图标。真的很简单。只需在 href 上使用一个简单的 preg_replace_callback 即可:
$changed_html_reference = preg_replace_callback(self::HTML_REF_REGEX,
array($this,'AddExtraHtmlToOneHref'), $strHtmlBodyText);
与一个
add_filter('the_content', array($this,'ReplaceAll'), 9);
对于替换和默认调用 google 站点的图标(摘出类):
const GOOGLE_ICON_URL = 'http://www.google.com/s2/favicons?domain=';
function HttpDownloadFeed()
{
$parsed_url = parse_url($this->url);
$data_r = wp_remote_get(self::GOOGLE_ICON_URL . $parsed_url['host']);
$data = $data_r['body'];
return $data;
}
我现在采取了制作自己的缓存类的方法,该类将图标存储在目录中,例如/cache/com/facebook/www/f.png。
但我现在正在考虑那个班级的地点。为了方便起见,我将缓存放在 wp-content 目录中。我有以下问题:
- 我可以插入现有的缓存/缓存插件来为我进行缓存吗?
- 我自己的缓存的最佳位置是什么?我应该把它放在 /wp-content/cache 或 /plugins/myplugin/mycache 甚至 /themes/mytheme/cache 下吗?
或者有更好的方法吗?
(我使用 com/facebook/www 方法,因为我还存储了 stumbleupon、delicious 等的会话日期......在那里,我只想调用这些页面/提要一次,包括。对 google favicon 的请求)(并且由于我需要显示图标,并且并非所有浏览器都支持内联显示嵌入 html 中的图标,我需要将它们写入客户端可用的目录)。
解决方案
大多数 WordPress 缓存功能都是根据文本(如果需要的话进行序列化)来设置的。由于您需要存储二进制数据,因此最好维护自己的缓存。
至于缓存的位置我认为这取决于:
- 对于单个个人安装,我会选择简短且 URL 漂亮的目录,例如我将图标存储在
/images/icons/
(/images/
是我所有图像的目录) - 对于我认为可能在不同安装或其他用户中使用的东西
/plugins/myplugin/mycache/
如果功能打包为插件,则最有意义(相同,但在主题目录中,如果是主题的一部分)
其他提示
我可以插入现有的缓存/缓存插件来为我进行缓存吗?
是的,你可以,但问题是这是否有意义。文件系统是一个非常好的图像文件数据库。
我自己的缓存的最佳位置是什么?我应该把它放在下面吗
/wp-content/cache
或者/plugins/myplugin/mycache
甚至/themes/mytheme/cache
?或者有更好的方法吗?
它总是取决于一个简单的位置是上传文件夹中的子文件夹,因为该位置通常是可写的。