繁体   English   中英

从非公共目录加载CSS或JavaScript

[英]loading css or javascript from non-public directory

有没有办法从公共Web目录外部加载CSS和/或JavaScript文件?

例如,在我的主机服务上,我有/ public_html,但不希望这些文件存在于公共目录中,并且不希望它们位于/ system中同级目录/ system(我正在使用codeigniter)的公共目录之外的目录中/应用程序/视图/

最终,JavaScript和样式表在客户端进行处理。 因此,没有解决方案能够真正向公众隐藏您的JavaScript或CSS。

一种可能的解决方案是使用诸如file_get_contents()之类的东西通过PHP加载所需的CSS / Javascript文件,然后使用内联样式/脚本将其直接输出到页面。

但是,这实际上并不能解决您向公众隐藏代码/样式的问题。 它使您可以选择通过某种打包程序或混淆处理来过滤所有代码和样式,尽管没有理由您无法使用静态文件来做到这一点(而且处理费用要少得多)

是的-从某种意义上讲- 缩小 [ http://code.google.com/p/minify/]是一种方法。

查看配置文件[ http://code.google.com/p/minify/source/browse/trunk/min/config.php]的第39行。 在这里,您将看到缩小的缓存位于Web根目录之外的位置。 现在,我不知道源JS和CSS是否可以与缓存位于同一目录中。

并非没有面向公众的代理人。

您将需要file_get_contents()include它们,然后将它们提供给您的页面。

您不仅可以执行../../system并超越DOCROOT。

它们需要由浏览器处理,因此它们必须可访问。

如果您想阻止人们以易于理解的方式查看您的源代码,请查看CSS minifyJS packer 当然,这些只是混淆了代码。 确定的任何人都将能够阅读您的JavaScript并查看其功能。

您为什么不希望人们阅读您的CSS或JavaScript?

我知道您的意思是twmulloy,在不同的地方使用“查看”相关信息似乎不一致。 但是,请考虑JS和CSS文件是支持视图的资源,而不是视图本身的一部分。

也就是说,您可以通过多种方式实现自己想要的。 一种可能是编写一个控制器,该控制器接受对您的JS / CSS资产的请求,并从相关位置(视图文件,数据库,实际上是任何地方)输出标头和数据。 但是,与仅接受在根级别public_html的子文件夹中弹出文件的“唯一性”相比,这是低效的。 我像上面的许多评论者一样,认为这是其速度和适当性的最佳解决方案。 仅具有与“系统”相同级别的“资产”目录,其中包含图像,css,js等。 您可以使用别名或虚拟文件夹使您感觉更好...

但是,还有第三种方式。 有一些库可以像您想要的那样做一些事情,并具有Minify(来自公认的答案)和压缩的额外好处,或者您喜欢的任何东西。 我知道的两个库分别称为AssetLibPro和Carabiner,它们允许您指定资产路径(根据需要),然后加载JS和CSS文件(包括组,例如屏幕,必要时进行打印)。 然后,它们将所有相关的CSS / JS等作为一个文件提供; 压缩,缩小,缓存...任何需要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM