有没有办法从公共 web 目录之外加载 css 和/或 javascript 文件?
例如,在我的托管服务上,我有 /public_html 但不希望这些文件存在于公共目录中,并希望它们在 /system 内的同级目录 /system 中的公共目录之外的目录中(我正在使用 codeigniter) /应用程序/视图/
有没有办法从公共 web 目录之外加载 css 和/或 javascript 文件?
例如,在我的托管服务上,我有 /public_html 但不希望这些文件存在于公共目录中,并希望它们在 /system 内的同级目录 /system 中的公共目录之外的目录中(我正在使用 codeigniter) /应用程序/视图/
最终,Javascript 和样式表在客户端进行处理。因此,没有任何解决方案可以真正向公众隐藏您的 javascript 或 CSS。
一种可能的解决方案是通过 PHP 使用类似 file_get_contents() 的方式加载所需的 CSS/Javascript 文件,然后使用内联样式/脚本将其直接输出到页面。
不过,这并不能真正解决您向公众隐藏代码/样式的问题。它可以让您选择通过某种打包程序或混淆器过滤所有代码和样式,尽管您没有理由不能对静态文件执行此操作(而且处理费用要少得多)
是的——在某种程度上——并且Minify [ http://code.google.com/p/minify/]是一种方法。
查看配置文件的第 39 行 [ http://code.google.com/p/minify/source/browse/trunk/min/config.php]。在这里,您将看到您的缩小缓存位于 Web 根目录之外的位置。现在,我不知道源 JS 和 CSS 是否可以与缓存位于同一目录中。
并非没有面向公众的代理。
您将需要它们file_get_contents()
,include
然后将它们提供给您的页面。
您不能只做../../system
并超越 DOCROOT。
它们需要由浏览器处理,因此它们需要可访问。
如果您想阻止人们以人类可读的方式查看您的源代码,请查看CSS minify和JS packer。这些当然只是混淆了代码。任何确定的人都可以阅读您的 JavaScript 并查看它的作用。
为什么不希望人们阅读您的 CSS 或 JavaScript?
我知道你的意思 twmulloy,在不同的地方有“查看”相关信息似乎不一致。但是,请考虑 JS 和 CSS 文件是支持视图的资源,而不是视图本身的一部分。
也就是说,您可以通过多种方式实现您想要的。一种可能是编写一个控制器,它接受对您的 JS/CSS 资产的请求,并从相关位置(视图文件、数据库,实际上是任何地方)输出标题和数据。但是,与仅接受在根级别 public_html 的子文件夹中弹出文件的“不整洁”相比,这是低效的。我和上面的许多评论者一样,认为这是速度和适当性的最佳解决方案;只是有一个与“系统”目录处于同一级别的“资产”目录,其中包含图像、css、js 等。您可以使用别名或虚拟文件夹来让您感觉更好...
但是,还有第三种方法。有一些库可以做一些你想要的事情,加上 Minify (来自接受的答案)和压缩的额外好处,或者任何你喜欢的东西。我知道的两个库称为 AssetLibPro 和 Carabiner,它们允许您指定资产路径(如您所愿),然后加载您的 JS 和 CSS 文件(带有组,例如屏幕,如果需要则打印)。然后他们将所有相关的 CSS/JS 等作为一个文件提供;压缩,缩小,缓存......任何你需要的东西。