我正在使用以下 PHP 代码从网页中获取 og:image
属性:
$site_html = file_get_contents($some_url);
$html = new DOMDocument();
$html->loadHTML($site_html);
$meta_og_img = null;
foreach ($html->getElementsByTagName('meta') as $meta) {
if ($meta->getAttribute('property') == 'og:image') {
$meta_og_img = $meta->getAttribute('content');
}
}
我希望每次加载页面时都需要 og:image
信息,所以最好(就页面加载时间等而言) (1) 获取 每次用户加载页面时从外部网站获取 og:image
或 (2) 一次获取 og:image
并将其存储在我的服务器上?
其次,如果我要将 og:image
图像存储在我的服务器上,我应该如何组织它所在的位置?
例如,如果我需要来自以下网页 URL 的 og:image
,我将如何以及在何处将给定的 og:image
存储在我的服务器上:
Link: http://www.huffingtonpost.com/2014/10/20/hong-kong-negotiations-go_n_6016982.html?utm_hp_ref=canada&ir=Canada
og:image: http://i.huffpost.com/gen/2187192/thumbs/o-UMBRELLA-COPS-facebook.jpg
我是否会将 URL 存储在数据库表中并给它一个唯一的 ID,这样 og:image
的服务器目录将类似于:
/var/www/html/og_images/<ID>/image.jpg
谢谢。
最佳答案
是存储好还是每次都获取好:远程信息尽可能多地存储在本地肯定更好。所需的远程调用越多,页面加载时间就越慢。如果您担心拥有最新的图像,那么有多种方法可以在不影响用户体验的情况下异步获取内容。
就存储而言,您可以从多个方向进行处理。您需要确定要存储的图像数量以及空间要求。如果你有足够的磁盘空间,那么你当然可以将图像存储在本地硬盘上,但是你需要考虑随着流量的增加,对服务器的图像请求也会越来越多。
更明智的解决方案是考虑使用像 Amazon S3 这样的解决方案,并直接从他们的 CDN CloudFront 提供静态文件。这样您就不会为了传送静态文件而在您的网络服务器上招致额外的流量。
关于php - 如何存储og meta标签信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26477118/