以低廉的价格拥有博客或网站的第 22 条陷阱之一是不要超出预算,同时小心翼翼地绕过过于紧缩的空间/带宽配额。和无数其他人一样,我自己也经常悬在上述天平上。我最近部署的一个解决方案是通过许多非常便宜甚至免费的文件托管服务之一来提供我所有的静态内容,以从我当前的托管包中延伸出更多的里程数。
从远程位置提供我的静态内容有几个好处,例如减少带宽消耗和减少内容请求。但是,我立即意识到此解决方案的不便之处。修改本地机器(我用于开发和测试)上的任何静态内容会迫使我更改它们对本地路径的引用。如果我想在与互联网断开连接的情况下进行任何开发,情况也是如此。当然,在部署之前必须将这些引用切换回指向我的静态托管。我发现这变得如此乏味以至于我只是在生产中进行测试 – 坏主意。
嗯,就在那时,我想到了这个明显的解决方案——虽然我很确定它不是原创的,但它既简单又非常有用。我使用一个 common.php 文件来保存我所有的站点范围的帮助程序方法。我向其中添加了这个简单的功能:
function get_static_root() { if($_SERVER['HTTP_HOST'] == 'localhost') { return 'http://localhost/static'; } else { return 'http://www.xxxxxx.com/static'; } }
然后我将所有静态内容组织到以下目录结构中:
- /(站点根目录)
- 静态
- css
- js
- 图片
- 静态
这会导致我所有的本地静态内容与我远程托管的静态内容的文件结构相匹配。现在,例如,当我想引用图像时,我只需将 url 设置为 /images/image.jpg。如果我在本地机器上测试,url 将解析为 http://localhost/static/images/image.jpg,而在生产环境中它将解析为 http://www.xxxxxx.com/static/images/图片.jpg.
虽然这确实需要更多的前期工作,但它为我节省了大量时间并使开发变得更加容易。
对于那些喜欢想象…的人
就这样吧!非常感谢 David 让我成为他出色博客的客座作者!