plone.htmlhead에서 CSS에서 JSS를 분리합니다
문제
성능 조정이 필요한 프로젝트에서 Plone 3.1.7을 사용하고 있습니다. CSS가 페이지 상단에 있고 JS는 맨 아래에 있어야하는 조정 요청 중 하나입니다. 그러나 둘 다에 있습니다
<div tal:replace="structure provider:plone.htmlhead" />
main_template에서. 이 것들을 어떻게 분할합니까?
미리 감사드립니다
해결책
내 직장 동료들은 해결책을 찾았습니다.
Plone.htmlhead는 다른 3 개의 뷰렛을로드하는 Product Plone.app.layout에서 등록한 뷰렛입니다.
- plone.resourceregistries.styles
- plone.resourceregistries.scripts
- plone.resourceregistries.kineticstylesheets
다음을 헤드 태그에 넣었습니다.
<div tal:replace="structure provider:plone.resourceregistries.styles" />
그리고 바닥의 다음은 다음과 같습니다.
<div tal:replace="structure provider:plone.resourceregistries.scripts" />
<div tal:replace="structure provider:plone.resourceregistries.kineticstylesheets" />
완료! CSSS는 페이지 상단과 페이지 하단의 JSS에 있습니다.
다른 팁
JS를 비동기 적으로 트리거하도록 설정되어 있기 때문에 일반적으로 Plone 으로이 작업을 수행 할 필요는 없으므로 렌더링을 차단하지 않아야합니다 (이는 성능 팁이 무엇인지).
템플릿에 직접 물건을 삽입하면 상황이 변경 될 수 있습니다. 그러나 기본 설정은 여기서 질문을 오해하지 않는 한 올바른 일을합니다 (그렇습니다 :)
이것은 최근의 일부 버전의 제품에서 알고 버그였습니다. Resourceregistries이 문제는 2.02b 릴리스에서 수정되었습니다. 빌드 아웃에서 해당 버전을 고정 할 수 있습니다.
[versions]
...
Products.ResourceRegistries == 2.02b
...
그런 다음 빌드 아웃을 다시 실행하면이 문제가 사라집니다.
Plone.htmlhead 분할을 3 개의 뷰렛으로 대체하는 위의 제안은 페이지 제목을 잃어 버렸기 때문에 완전히 효과가 없었습니다 (SEO에는 좋지 않음). 페이지 제목은 일반적으로 plone.htmlhead에 포함되어 있다고 가정합니다.
더 나은 솔루션은 새로운 제품을 사용하는 것 같습니다. Resourceregistries는 위에서 제안한 것입니다. 다음은 저를 위해 일했습니다.
버전
... Products.ResourceRegistries=2.0b3 ...
헤드 태그에도
<div tal:replace="structure provider:plone.resourceregistries.styles" />
내가 넣었다
<title tal:define="page_title python: context_state.object_title()"
tal:content="page_title">page title</title>
....
그러나 사실 나는 모든 것을 잃었습니다 메타 키워드와 관련된 태그!