Skip to content

Conversation

@geneux
Copy link
Owner

@geneux geneux commented Sep 30, 2016

No description provided.

hr style="margin:2px 4px 0 4px"
h4 Comments:
div id="#{commentable.entity}-comments-#{commentable.id}" style="margin-left:40px"
- commentable.comments.each do |comment|
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А почему бы весь список не закэшировать?

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Да, пожалуй можно поднять повыше, не задевая логики условных отображений и подключения JST. Хотя, оно все равно попадало бы в вышестоящий по вложенности кеш.

- commentable.comments.each do |comment|
= render 'comments/comment', comment: comment
- cache comment do
= render 'comments/comment', comment: comment
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Лучше кэш переместить внутрь самого паршла, чтобы можно было и в других местах его же использовать.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Пожалуй, да, и першаиал не имеет логики, и в свете предыдущей правки это логично.

= @question.body
#question-attachments
= render 'attachments', attachable: @question
- cache @question do
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А вот здесь, кажется, проблема: у тебя кэшируется весь блок с вопросом, в том числе и ссылки для удаления/редактирования, которые показываются только автору. А сейчас одна и та же закодированная версия показывается всем пользователям.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Да, соглашусь, лихо скопировал из скринкаста и как раз здесь о логике вьюхи не задумался. Сходу есть вариант не кешировать всю страницу, но он мне не нравится. И подсознательно чувствую, что есть способ сделать ключ кеша, но пока не могу точно сообразить, что в него включить. Постараюсь завтра додумать этот момент, это единственное, что осталось сейчас тут исправить, по другим пунктам уже прошелся.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Размышлял, что лучше заключить в кеши, в итоге сделал примерно как делал всегда -- записал туда (в случае текущего проекта) учствующие в формировании Policy и локальные предикаты. Писал сразу их значения, так как нет перекрывающихся по их количеству блоков. Путь кеша получился полу-понятным, но понятнее все равно не сильно сделаешь, да и не за чем в общем-то. Заодно, обнаружил, что первоначально все сделал достаточно "на скорую руку", не особо задумываясь, поэтому доделал еще связанные модели и выделил кеширующие блоки. Не уверен, что оптимально и они существуют не дублируя друг друга, но зато надежно. Попутно пришлось еще несколько спек поправить.

= f.text_area :body, class: 'form-control'
= f.submit 'Save', class: "btn btn-info btn-sm pull-right"
hr
- cache [answer, policy(answer).edit?, policy(answer).destroy?, policy(answer).star?, comet]
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Идея хорошая, но в данном случае разве нельзя ограничится чем-то одним из edit? и destroy?.
Хотя, если они ровны, на количество ключей не повлияет все равно.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Да можно в принципе, ключи типа "Answer и 3 boolean-а" нигде не используются больше, но это скорее с целью предусмотреть "на будущее", если вдруг они станут не равны -- формально мы же их так и проверяем разными в паршиале. Тем более, что длина ключа особо не влияет ни на что, так что решил формально учесть, как было, например, с политикой на подписку.

@geneux geneux force-pushed the 22-caching branch 3 times, most recently from caf6ee3 to 1299e67 Compare October 4, 2016 14:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants