【问题标题】:Redirect to dynamic sitemap or generate it through yiic?重定向到动态站点地图还是通过 yiic 生成?
【发布时间】:2014-11-05 03:47:59
【问题描述】:

我想为 yii 站点渲染动态站点地图。 但是我在 url manager 中没有做到这一点:

'urlManager'=>array(                
    'showScriptName'=>false, 
    'rules'=>array(                 
        'sitemap.xml/*'=>'/site/sitemapxml', 
        array('site/sitemapxml', 'pattern'=>'sitemap.xml', 'urlSuffix'=>''),
 ...

所以我转向.htaccess 并添加了这样的重定向:

Redirect 301 /app3/sitemap.xml http://tarex.ru/app3/index.php/?r=site/sitemapxml

另一种选择是通过an extension in terms of a yiic command 将sitemap.xml 生成为文件。它会更有时间/资源效率吗?

【问题讨论】:

  • 对于高度动态的网站,站点地图可能不是一个好主意。见this链接。

标签: php .htaccess yii sitemap


【解决方案1】:

首先,你的规则不正确,改用这个:

'rules' => array(                 
    '/sitemap.xml' => '/site/sitemapxml', 
    ...
)

现在,关于您的问题,您更喜欢哪种方式并不重要,每种方式都有自己的优缺点。

控制器动作选项

优点:

  • 易于实施和维持。这只是另一个动作,您不会忘记站点地图是如何在您的系统中生成的。

缺点:

  • 因此,动态内容会降低性能。

解决方案: 使用COutputCache 过滤器进行缓存。将此过滤器添加到您的 SiteController:

public function filters()
{
    return array(
        array(
            'COutputCache + sitemap',
            'duration' => 24 * 60 * 60 // cache for 24 hours
        ),
    );
}

不要忘记在配置文件中配置cache 组件。为此使用CFileCache。如果您不熟悉此主题,请阅读 Yii 权威指南的 corresponding section

这是一个非常灵活的解决方案,如果需要,您可以扩展此示例以使其从您的配置文件中读取缓存持续时间。

yiic 选项

优点:

  • sitemap.xml 只是一个静态文件,由 Web 服务器更有效地提供服务

缺点:

  • 需要定期更新并控制这个过程
  • 需要使用除框架之外的其他东西,这也需要一些监控

解决方案: 使用 cron 作业生成 sitemap.xml

虽然最终决定很大程度上取决于项目的特定细节,但总的来说,我会坚持第一种方法。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-29
  • 2023-03-25
  • 2014-08-28
相关资源
最近更新 更多