我了解资产管道如何获取清单中说明的文件并对其进行预处理,将它们连接成一个文件,然后压缩该文件以加快下载速度。
在我的应用程序中,我有几个不同的部分,其中有不同的依赖项。
在我的资产中,我为这三个部分创建了三个目录:
stylesheets
application.scss -manifest for common elements such as bootstrap
proofreaders
index.scss -manifest file for this section
p_dashboard.scss
clients
index.scss -manifest file for this section
c_dashboard.scss
frontend
index.scss -manifest file for this section
custom.scss
我已将文件添加到config / initializeres / assets.rb文件:
Rails.application.config.assets.precompile += %w(proofreaders/index.css clients/index.scss frontend/index.scss)
这是我的application.scss清单文件中的示例:
@import "bootstrap";
@import "font-awesome";
@import "fonts";
@import "variables";
@import "utilities";
@import "bootstrap-overrides";
@import "animations";
@import "custom";
在我的校对者布局文件中,我具有以下内容:
doctype html
html
head
meta content=("text/html; charset=UTF-8") http-equiv="Content-Type" /
title Dashboard
= csrf_meta_tags
= stylesheet_link_tag 'application', 'proofreaders', media: 'all', 'data-turbolinks-track': 'reload'
想法是,当用户第一次通过frontend部分进入站点时,他们将下载application.css压缩文件和frontend.css压缩文件。
然后,如果他们继续进行下一节,例如Proofreaders部分,则因为他们已经下载了application.css文件,因此应该将其缓存,因此不需要再次下载。
所以我的问题是,我对文件的组织方式以及浏览器/服务器将最大限度地减少下载的工作方式的理解是否正确?
如果没有,如果用户已经通过上一节下载了文件,是否有任何方法可以最大程度地减少文件的下载?
答案 0 :(得分:0)
您的理解似乎是正确的。当我到达此处时,您将再创建3个清单文件并在所有布局/部分中加载应用程序,因此当用户从第一部分/布局进入站点时,应该下载application.css文件,并且不应再次发送请求。>
尽管您可以确认环境资产配置(例如资产调试和编译模式)或缓存不应为null_store。
或如果一切正常,那么您也可以检查浏览器设置缓存。像在chrome中一样,您可以按CTRL + SHIFT + I,然后在网络菜单中检查已禁用的缓存选项。
希望您对此有所帮助。