【问题标题】:How to store og meta tag information?如何存储 og 元标记信息?
【发布时间】:2014-10-21 00:29:47
【问题描述】:

我正在使用以下 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

谢谢。

【问题讨论】:

    标签: php html mysql metadata meta-tags


    【解决方案1】:

    是存储好还是每次都获取好:尽可能多的远程信息存储在本地肯定更好。需要的远程调用越多,页面加载时间就越慢。如果您担心拥有最新的图像,那么有几种方法可以异步获取内容而不会影响用户体验。

    就存储而言,您可以从几个方向着手。您需要确定要存储的图像数量以及空间要求。如果您有足够的磁盘空间,那么您当然可以将图像存储在本地硬盘驱动器上,但是您需要考虑随着流量的增加,将有更多的图像请求到达服务器。

    更明智的解决方案是考虑使用 Amazon S3 之类的解决方案,并直接从其 CDN CloudFront 提供静态文件。这样您就不会仅仅为了传递静态文件而在您的网络服务器上产生额外的流量。

    【讨论】:

      【解决方案2】:
      1. 您可能可以将所有内容存储到您的数据库中。

        $url = 'http://www.huffingtonpost.com/2014/10/20/hong-kong-negotiations-go_n_6016982.html?utm_hp_ref=canada&ir=Canada';    
        $ogImageUrl = 'http://i.huffpost.com/gen/2187192/thumbs/o-UMBRELLA-COPS-facebook.jpg';    
        $image = file_get_contents('http://i.huffpost.com/gen/2187192/thumbs/o-UMBRELLA-COPS-facebook.jpg');    
        
        $escaped_url = mysql_real_escape_string($url);
        $escaped_ogImageUrl = mysql_real_escape_string($ogImageUrl);
        
        $query = 'INSERT INTO `og_images` (`url`, `og_image_url`, `image`)
              VALUES ('.$escaped_url.', '.$escaped_ogImageUrl.', $image)";
        

      我不知道将图像存储到数据库中是否是个好主意。 归结为一个问题:“滴还是不滴”?有关赞成/反对论点,请参阅Storing Images in DB - Yea or Nay?

      赞成的说法是:非常简单的 SELECT 查询。

      1. 您可以只存储链接和指向缓存文件夹的指针。

      2. 您可以只存储链接和指向外部 CDN 的指针。

      所有这些决策都取决于用例和预期流量。 如果这是一个低流量站点,存储到 db 可能就足够了 如果这是一个高流量站点,CDN 层可能是更好的选择。

      【讨论】:

      • 是的,主要问题是如果他们的网站下线或删除了图片,我将不再拥有该图片。
      • 我不明白。图像存储在您的服务器上。这些方法的唯一问题是,您必须抓取页面以保持同步。这基本上是一种缓存预热策略。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-25
      • 1970-01-01
      • 1970-01-01
      • 2013-07-27
      • 2021-06-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多