phpBB拥有许多静态资源,并且从不同的服务器为它们提供服务,而动态论坛的服务器可能意味着性能显着提升。我们可以在将来设置过期标题,并可能在将来使用CDN。
从我到目前为止所做的检查看来,似乎更改 functions.php 以指示不同的基本目录可能有效。代码
$web_path = '//some.new.domain/path'/*(defined('PHPBB_USE_BOARD_URL_PATH') && PHPBB_USE_BOARD_URL_PATH) ? $board_url : $phpbb_root_path*/;
但是,我不清楚这是否会产生其他影响,例如使上传目录无法访问,因为路径似乎是服务器本地的。此外,它无法使用 styles.php
解决动态CSS的生成问题有没有快速的方法来指示静态资源的更改而不破坏phpBB代码?
答案 0 :(得分:0)
如果可能的话,我不会触及PhpBB的代码,而是使用Apache的URL重写引擎。
在PHPBB3中,大多数静态内容(按大小)来自/assets/
子目录。
所以如果:
.htaccess
或等效启用mod_rewrite
或等效安装,.htaccess
文件中的,
Redirect permanent /assets http://mycdnhoster.com/collector/phpbb3/assets
这使您可以非常轻松地启用/禁用CDN,而不必担心维护对PhpBB代码的修改。
同样适用于" style"和"主题"静态文件。当浏览器仍然点击你的服务器时, 会有轻微的性能损失,只是为了在其他地方被反弹,但使用现代流水线浏览器并不是真正的问题。此外,在大多数情况下,重定向的资源将被记住"通过浏览器再次赢得服务器(至少一段时间)。
另一种可能性,例如通过NginX来重写输出HTML 。您可以使用HttpSubModule将所有对yoursite / static的引用转到anothersite / differentpath / static。
注意某些文件可能包含可能不再有效的绝对链接,或者可能包含的相对链接"在重写范围之外,所以再次不再工作。例如:
url(../../../path/...)
)的引用的CSS文件。另外要注意,因为您已经指定 pagespeed ,mod_pagespeed
可能与此类URL重写不兼容,因为它会解析HTML并尝试压缩资源在此引用。因此,您可能最终将所有大量的CSS卸载到CDN,并且仍然从服务器下载,嵌入到您的优化,压缩和难以识别的表单中单个mod_pagespeed'本地CSS引用。
即,你的html中有
<link href="/app/small.css" ... />
<link href="/static/big.css" ... />
<link href="/static/big2.css" ... />
并且您希望重写能够从异地加载静态。如果没有进一步的优化即将发生的事情。相反,您的客户会看到由mod_pagespeed
重写的页面
<link href="/app/small+big+big2.css?pagespeed&whatever" />
并且他永远不会在/static
中请求任何内容,永远不会被重定向,而是会请求并下载压缩的,优化的,但仍然比您希望更大,从您的服务器合并CSS。
答案 1 :(得分:0)
考虑到你的问题的日期,我认为你已经在使用phpBB 3.1,在这种情况下,你可以编写一个扩展,做你想要的,保持phpBB代码完整,不会干扰论坛升级。 如果你不是,那么你将会遇到代码修改或其他解决问题的方法。
对于3.1,您需要编写一个插入事件'core.page_header_after'的插件,该插件将在page_header()
函数的末尾执行。这允许您覆盖在标题中创建的所有模板变量,如果您希望在模板中使用其他变量,则可以添加新变量。
在您的情况下,您需要查看分配这些变量。
'T_ASSETS_PATH' => "{$forum_static_url}assets",
'T_THEME_PATH' => "{$forum_static_url}styles/" . rawurlencode($this->user->style['style_path']) . '/theme',
'T_TEMPLATE_PATH' => "{$forum_static_url}styles/" . rawurlencode($this->user->style['style_path']) . '/template',
'T_SUPER_TEMPLATE_PATH' => "{$forum_static_url}styles/" . rawurlencode($this->user->style['style_path']) . '/template',
'T_IMAGES_PATH' => "{$forum_static_url}images/",
'T_SMILIES_PATH' => "{$forum_static_url}{$this->config['smilies_path']}/",
'T_AVATAR_PATH' => "{$forum_static_url}{$this->config['avatar_path']}/",
'T_AVATAR_GALLERY_PATH' => "{$forum_static_url}{$this->config['avatar_gallery_path']}/",
'T_ICONS_PATH' => "{$forum_static_url}{$this->config['icons_path']}/",
'T_RANKS_PATH' => "{$forum_static_url}{$this->config['ranks_path']}/",
请注意,在上面的示例中,我已经使用forum_static_url变量替换了phpbb的常用URL,该变量可以填充您希望提供静态文件的域的URL。
我希望这会有所帮助。 看看phpBB3.1已经免费提供的一些扩展,以了解如何实现这个简单的扩展。