Ali*_*Ali 6 javascript css seo zend-framework
我正在使用Zend框架和自制小部件系统编写webapp.每个小部件都有一个控制器,如果选择,可以选择渲染其中一个视图.这确实有助于我们在网站的任何位置模块化,重新配置和重用小部件.
问题是每个小部件的视图都包含自己的JS和CSS代码,当整个页面放在一起时会导致非常混乱的HTML代码.你到处都有口袋的样式和脚本标签.由于我确定你知道,这对于很多不同的原因是不好的,但它对我们的搜索引擎优化也有深远的影响.
我已经提出了几个解决方案:
将每个小部件的每个视图的CSS和JS分离到它自己的文件中 - 这对于加载时间有很多缺点(需要单独加载更多资源)并且它使编码变得非常困难,因为现在你必须打开3-4个文件只是为了编辑一个小部件.
将所有小部件CSS组合成一个单独的文件(与JS相同) - 当有人进入网站时,也会导致大量负载,混合所有小部件的CSS和JS,因此更难跟踪它们,以及其他我确信你能想到的问题.
创建一个使用方法1(每个小部件单独的CSS和JS)的系统,在交付页面时,将所有CSS和JS拼接在一起.这显然需要更多的处理时间,当然还需要创建这样的系统等.
我的问题是你们对这些解决方案的看法,或者是否有你知道的预先存在的解决方案(或任何可能有帮助的技术)解决这个问题.我非常感谢你的所有想法和评论!!
多谢你们,
阿里
我肯定会选择第三种方法。您可以获得第一种方法中描述的分离灵活性,但您可以获得微调应用程序性能的能力(正如 Pointy 所指出的..)。
您所需要的只是一些中央注册表系统(一个类),您可以使用它来跟踪需要加载的样式表。
Styles::add_sheet('widget_1.css');
Run Code Online (Sandbox Code Playgroud)
此外,您可以向此类添加触发器(方法),以便处理缓存的代码可以跟踪串联样式表是否需要重建。
if (Styles::cache_needs_update()) {
// rebuild (concatenate) stylesheet and save in cache
}
Run Code Online (Sandbox Code Playgroud)
更进一步,我们还可以按模块或某种其他类型的分组标准连接样式表。当有很多样式表(或 js 文件)时,可以单独缓存这些串联的样式表组。
上面的代码示例将变成类似
Styles::add_sheet('widget_1.css','group_name');
if (Styles::cache_needs_update('group_name')) {
// rebuild (concatenate) stylesheet for this 'group_name' and save in cache
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
418 次 |
最近记录: |