Програмын кодыг оновчтой болгох. Программист болон хөрвүүлэгчийн кодыг оновчтой болгох үндсэн шинж чанарууд

Эрхэм найзууд аа, та бүхнийг блог сайтад тавтай морилно уу. Ихэнх хэрэглэгчид сайтыг зөвхөн гаднаас нь хүлээн авч, дизайн, бүтцийг нь үнэлдэг боловч гадаад үзэмжтэй бүрэлдэхүүн хэсгүүдийн ард W3C стандартаар тодорхойлсон олон дотоод хууль, дүрэм байдаг. Дотоод бүрэлдэхүүн хэсгүүд нь html код болон CSS загваруудыг (тусдаа функцгүй) агуулдаг. Ихэнхдээ вэбмастерууд сайтын харагдах байдалд илүү их санаа зовдог. Гэсэн хэдий ч html код хэлбэрийн хуудасны дотоод агуулга нь ялангуяа хайлтын урсгалыг татахад анхаарал хандуулахыг шаарддаг.

Сайн дотоод вэб сайтын оновчлол нь амжилттай онлайн сурталчилгаанд зайлшгүй шаардлагатай. Мэдээжийн хэрэг, сурталчилгааны өмнө хайлтын системийг оновчтой болгох нь чухал цэг юм. Холбоос бүхий вэбсайтыг сурталчлахоновчлолгүйгээр энэ нь үр дүнгүй бөгөөд ирцийг бууруулснаар хор хөнөөл учруулж болзошгүй юм. Үүний зэрэгцээ аль ч үе шатанд бүх ололт амжилтыг хүчингүй болгож болзошгүй бүх асуудал, дутагдлыг тодорхойлох шаардлагатай. Ийм сул холбоос нь сайтын html код байж болно.

Вэб сайтын кодыг янз бүрийн баталгаажуулагч ашиглан шинжилж болно. Өөрийгөө үнэлэхийн тулд та загвар, скрипт бүхий файлуудыг идэвхгүй болгох ёстой. Тэднийг ингэж л хардаг хайлтын роботууд. Хэрэв сайт удаан ачаалж, буруу харуулж, хайлтын системүүд хуудасны логикийг ойлгохгүй байвал үүнтэй холбоотой асуудал гарах нь гарцаагүй. Нөөцийн кодыг сайжруулах шаардлагатай байна.

Вэбсайт кодын оновчтой болгох нь вэбсайтын кодын хэмжээг багасгахад үндэслэсэн цэвэр техникийн процесс гэж тооцогддог. Энэ нь юуны түрүүнд хайлтын системүүд нь траффикийн гол эх үүсвэр болдог нөөцөд зайлшгүй шаардлагатай. Гол дүрэм бол энгийн байдал юм. Бүх хэв маяг, скриптүүдийг зөөх ёстой гадаад файлууд. Код нь аль болох хялбар бөгөөд ойлгомжтой байх ёстой.

Хайлтын роботууд хуудасны бүтцийг хурдан үнэлэх ёстой. Тиймээс жааз, угаахгүй байх нь дээр. Эдгээр элементүүд нь кодыг хүндрүүлж, илүү төвөгтэй болгодог. Бүх дизайны элементүүдийг css маягийн файлуудад байрлуулж, тэдгээрийг спрайт болгон форматлана. Энэ нь кодын энгийн байдал нь сайтын хамаарлын түвшин, хуудсыг индексжүүлэх хурдыг тодорхойлдог. Хөдөлгөөн ихтэй том нөөцийн хувьд кодыг оновчтой болгох нь заавал байх ёстой журам юм. Үүний зэрэгцээ хэмжээ нь 1 МБ-аас ихгүй хуудсыг хүртэл оновчтой болгох шаардлагатай.

Вэбсайт кодын оновчлолын үндсэн үе шатууд

  • h1-h6 гарчгийг тодруулах нь ерөнхийдөө хайлтын роботууд тул текстийг зөв форматлах талаар бүү мартаарай.
  • Кодын хэмжээг багасгах - код бага байх тусам хуудсыг илүү хялбар, хурдан ачаална. Сүүлийн үед хуудас ачаалах хурд нь зэрэглэлийн чухал хүчин зүйл болсон Google SERPгэдгийг албан ёсоор зарласан.
  • Устгах хортой код- Олон хостууд сайтын файлуудыг сканнердаж, тэдгээрийг шийдвэрлэх замыг зааж өгдөг вирусны эсрэг хэсэгтэй байдаг. Хортой код байхгүй нь сайтыг хайлтын системд илүү дуртай болгодог.
  • Дотоод вэбсайтын оновчлол- шаардлагатай түлхүүр үгсийн нягтралыг дэмждэг өвөрмөц текстийг бий болгох.
  • - хуудасны жинг жигд хуваарилж, бага давтамжтай асуулгад, ялангуяа шинэ контент нэмэх үед урсгалыг нэмэгдүүлдэг.
  • Мета шошго нэмэх - гарчиг, түлхүүр үг, тайлбарыг бүтээлд ашигладаг бөгөөд хайлтын үр дүнгийн хуудсан дээр харуулдаг. Зөв зохиосон мета шошго нь хуудасны хамаарлыг нэмэгдүүлж, хэрэглэгчдийн анхаарлыг татдаг.
  • Зургийн оновчлол - зураг бүрийг оновчтой форматаар (GIF, JPEG, PNG болон PNG-24), мөн alt болон гарчгийг сонгох ёстой.

Сайтын кодын хүчинтэй байх

Хүчин төгөлдөр байх хугацаа гэдэг нь уг код нь дэлхийн нийтээр хүлээн зөвшөөрөгдсөн W3C стандартад нийцэж байгаа явдал юм. Олон алдаа агуулсан сайтын кодыг хүчингүй болгох нь тодорхой эх сурвалжийг сурталчлахад саад болж болзошгүй юм. Хэрэв бүх хосолсон шошго хаагдахгүй бол дизайны элементүүдийг харуулахад асуудал гарч болзошгүй. Гэвч бодит байдал дээр хамгийн том хайлтын системийн сайтууд ч 100% хүчинтэй байдаггүй. Энэ зөрүүгийн шалтгаан юу вэ?

  • Сайтын стандартчилалд хөдөлмөрийн өндөр эрч хүч, том динамик сайтыг баталгаажуулахдаа хөгжүүлэгчийн онцгой мэргэжлийн ур чадвар шаардагдана.
  • 100% хүчинтэй html код нь хөтчүүд хоорондын нийцтэй байдлыг баталгаажуулдаггүй бөгөөд хуучин хөтчүүдийг ашиглах үед алдаа гарахаас хамгаалдаггүй.

Гэсэн хэдий ч жижиг нөөцийн хувьд html кодын хүчинтэй байх нь хамгийн өрсөлдөөнтэй асуулгад эрэмбэлэхэд маш сайн урамшуулал бөгөөд энэ нь нөөцийн ноцтой байдлыг харуулах болно.

Каскадын загварын хуудсыг оновчтой болгох

HTML кодын оновчлолын нэгэн адил хэв маягийн оновчлол (css) нь олон вэбмастеруудын үл тоомсорлодог чухал ажил юм. Css кодыг оновчтой болгох нь сайтын хуудсуудыг ачааллыг хурдасгаж, урсгалыг хэмнэдэг. Css файл нь 100Кб хүртэл хэмжээтэй байдаг тул олон вэбмастерууд үүнийг оновчтой болгох шаардлагагүй гэж үздэг ч жилд нэг файлыг оновчтой болгосноор хэр их траффик хэмнэж байгааг бодох юм бол энэ нь хэр дутуу үнэлэгдсэн байсныг та ойлгох болно.

Та CSS-ийг гараар эсвэл тусгай үйлчилгээний тусламжтайгаар оновчтой болгох боломжтой. Сонголт бүр сул талтай. Сайтын кодыг гараар оновчтой болгох үед та маш их цаг зарцуулахын зэрэгцээ маш их зүйлийг алдаж болно. Гэсэн хэдий ч, машины оновчлол нь дизайн зөв харагдахгүй байж болох шугамуудыг арилгаж болно.

Кодлох тохиргоо

Өөр нэг хүчин зүйл нөлөөлдөг вэбсайтын сурталчилгаа, кодчилол юм. Орос хэл дээрх текстийг зөвхөн зөв харуулах болно зөв тохиргоо Windows-1251 эсвэл utf-8 гэх мэт кодчилол. Хэрэв контент зөв кодлогдоогүй бол тэмдэг, тэмдэглэгээг гажуудуулж, улмаар зочдыг алдах, индексжүүлэлт удаашрах болно.

Тэмдэглэлийн дэвтэр зэрэг хэрэгслээр хуудсуудыг үүсгэсэн, кодыг олон янзын форматаар хадгалдаг байсан хуучин нөөцийн хувьд кодчилолтой холбоотой асуудал гардаг. Зарим орчин үеийн хөтөчийм кодчилолуудыг таних боломжгүй.

Дотоод вэбсайтын оновчлол

Ихэнх тохиолдолд дотоод нөөцийг чадварлаг оновчтой болгох нь сайтыг ихээхэн хүчин чармайлтгүйгээр хайлтын системийн хамгийн сайн байрлалд хүргэж, холбоосын солилцоотой ажиллах боломжтой. Түүний албан тушаалд нөлөөлж буй жижиг зүйл бүр чухал юм. Хэрэглэгчид болон аль алинд нь ойлгомжтой бүтэц бий болгохыг хичээ Хайлтын системүүд. Олон хуудастай порталууд нь бүх хуудсууд нь 3-4 товшилтоос илүүгүй зайд байрлах зохион байгуулалттай хэсгүүдийг агуулсан байх ёстой. Breadcrumbs болон хүний ​​унших боломжтой вэб хаягийг ашиглах нь зүйтэй. Харамсалтай нь бүх CMS скриптүүд ийм функцтэй байдаггүй.

Дүгнэлт

Вэбсайтыг амжилттай сурталчлах техникийн асуудлыг оновчтой html кодоор шийддэг. Хайлтын системүүдСайтын хуудсуудыг хэрэглэгчдээс өөрөөр үнэлдэг тул цэвэр, хүчинтэй код нь таны нөөцийг хайлтын илэрцэд түлхэж өгдөг бөгөөд энд зөвхөн цөөн хэдэн байр суурь чухал байдаг.

Энэ материал миний эрхэм уншигчдад хэрэг болно гэж найдаж байна. Блогын шинэчлэлтүүдэд бүртгүүлнэ үү. Товчлуур дээр дарж, энэ материалыг дахин нийтэлсэнд би талархах болно. Дараагийн нийтлэлүүдэд уулзацгаая. Бүгдэд нь амжилт хүсье.

Энэ сайт дээр би ихэвчлэн туршлагаа хуваалцдаг, гэхдээ заримдаа надад зөвлөгөө хэрэгтэй байдаг. Асуудал нь миний чадвараас арай өндөр байгаа тул энэ богино нийтлэлийг зөвхөн Калашийн цувралаас гаргах болно, гэхдээ үүнийг шийдвэрлэх шаардлагатай байна. Тиймээс уншигчдад тодорхой хэмжээгээр асуулт тавьж байна. Гэвч үнэн хэрэгтээ манай эрхэм Google миний энэ сайт бүрэн гүйцэд биш байгаа бөгөөд энэ нь сайтыг удаашруулж байна гэж надад хэлсэн.

Тэдний хэлдгээр би хэл мэдэхгүй программист биш. Гэхдээ асуудлыг шийдэх хэрэгтэй байгаа учраас би энд оруулж ирсэн. Мэдээжийн хэрэг, асуулт нь төвөгтэй боловч энэ нь юу болохыг, худалдааг удирдахад хэрхэн тусалдаг болохыг ойлгохоос илүү хэцүү биш юм.

Вэбсайт кодыг хэрхэн оновчтой болгох вэ?

Би блогийнхоо хуудсууд дээр үүнийг олохыг хичээх болно. Үүнээс гадна бүх зүйлийг нэг дор хийх боломжгүй, гэхдээ та үйл ажиллагааны төлөвлөгөөтэй байх хэрэгтэй.

Би нохойг хаана оршуулсан талаар тайлбарлаж эхэлмээр байна. Магадгүй та над шиг сайтынхаа контентын удирдлагын системийг WordPress, Joomla, Drupal эсвэл өөр зүйл ашигладаг байх. Эдгээр системийг мэргэжлийн хүмүүс хийдэг бөгөөд алдаа багатай байдаг.

Гэхдээ энд бидний ихэнх нь үнэгүй хандалтаас авдаг загварууд нь алдаатай гэм нүгэл юм. , ялангуяа үнэ төлбөргүйг ихэвчлэн сонирхогчид хийдэг бөгөөд тэдний үр удам төгс биш байдаг. Загвар дээрх алдаануудыг сайн Google надад зааж өгсөн. Тэд юу вэ?

Google нь мобайл төхөөрөмж болон ширээний компьютерээс сайт ачаалах үед тусдаа алдаа гаргадаг. Гэсэн хэдий ч ялгаа бий. Тэгэхээр, миний загварт ямар алдаа эсвэл бүр олон тооны код байдаг вэ?

Компьютерийн хувьд:

1. Засах ёстойЭнэ бол том алдаа!

Хөтөчийн кэшийг ашигла!
Хэрэв та HTTP толгой хэсэгт статик нөөцийн огноо эсвэл дуусах огноог зааж өгвөл хөтөч өмнө нь хүлээн авсан эх сурвалжуудыг татаж авах болно. локал дискмөн интернетээс биш.
Хөтчийн кэшийг дараах нөөцөд ашиглаарай.

Http://avatars-fast.yandex.net/get-direct/nubNH6Z6vqKZZtboVlYcQg/y80 (хугацаа дуусах хугацаа байхгүй) http://directstat.ru/script (хугацаа дуусах хугацаа байхгүй) https://prostolinux.ru/karta- saita/ (хугацаа нь тодорхойгүй) https://prostolinux.ru/prostolinux.png (хугацаа нь тодорхойгүй) (хугацаа нь тодорхойгүй) (хугацаа нь тодорхойгүй) https://prostolinux.ru/wp-content/themes /rockwell_new/rockwell/css /jquery.lightbox-0.5.css (хугацаа нь тодорхойгүй байна) https://prostolinux.ru/wp-content/themes/rockwell_new/rockwell/css/orange.css (хугацаа нь тодорхойгүй) https://prostolinux.ru/wp -content/themes/rockwell_new/rockwell/css/superfish.css (хугацаа дуусах хугацаа байхгүй) https://prostolinux.ru/wp-content/themes/rockwell_new/rockwell/images/bk_body. jpg (хугацаа дуусах хугацаа байхгүй) https:/ /prostolinux.ru/wp-content/themes/rockwell_new/rockwell/images/bk_dotted_vert.gif (хугацаа дуусах хугацаа байхгүй) https://prostolinux.ru/wp-content/themes/ rockwell_new/rockwell/images/bk_menu_orange.jpg (үгүй) дуусах хугацаа wiya) https://prostolinux.ru/wp-content/themes/rockwell_new/rockwell/images/bullet_top.jpg (хугацаа дуусах хугацааг заагаагүй) https://prostolinux.ru/wp-content/themes/rockwell_new/rockwell/images /ico_date_orange.png (хугацаа дуусах огноо байхгүй) https://prostolinux.ru/wp-content/themes/rockwell_new/rockwell/images/topmenu_border_orange.jpg (хугацаа дуусах хугацаа байхгүй) https://prostolinux.ru/wp-content /themes /rockwell_new/rockwell/js/copy.js (хугацаа нь тодорхойгүй байна) https://prostolinux.ru/wp-content/themes/rockwell_new/rockwell/js/jquery-1.3.2.min.js (заалгаагүй) дуусах огноо ) https://prostolinux.ru/wp-content/themes/rockwell_new/rockwell/js/jquery.form.js (хугацаа нь тодорхойгүй) (хугацаа нь тодорхойгүй) (хугацаа нь тодорхойгүй) https:// prostolinux.ru/wp -content/themes/rockwell_new/rockwell/style.css (хугацаа нь тодорхойгүй) https://prostolinux.ru/wp-includes/images/smilies/icon_smile.gif (хугацаа нь тодорхойгүй)

Энд би хүчинтэй хугацаа гэж юу болох, хаана зааж өгөх ёстойг огт ойлгохгүй байна. Та мэдэх үү?

2. Засах талаар бодож үзээрэй

Хуудасны дээд хэсгээс дүрслэхийг хориглодог JavaScript болон CSS-г устгана уу.

Нэг хуудсанд блоклох скриптүүдийн тоо: 1. Нэг хуудсанд блоклох CSS нөөцийн тоо: 4. Тэд агуулгын дэлгэцийг удаашруулдаг.
Хуудасны дээд талд байгаа бүх контентыг зөвхөн дараах эх сурвалжуудыг татаж авсны дараа харуулах болно. Эдгээр нөөцийг ачаалахаа хойшлуулж, асинхроноор ачаалах эсвэл өөрөө доторлуулж үзээрэй чухал бүрэлдэхүүн хэсгүүд HTML код руу шууд оруулна.
Дэлгэцийг хааж буй JavaScript-г устгана уу:

https://prostolinux.ru/wp-content/themes/rockwell_new/rockwell/js/jquery-1.3.2.min.js

Оновчлох CSS ажилдараах нөөц дээр:

https://prostolinux.ru/wp-content/themes/rockwell_new/rockwell/style.css
https://prostolinux.ru/wp-content/themes/rockwell_new/rockwell/css/orange.css
https://prostolinux.ru/wp-content/themes/rockwell_new/rockwell/css/jquery.lightbox-0.5.css
https://prostolinux.ru/wp-content/themes/rockwell_new/rockwell/css/superfish.css

Энд асуудал илүү тодорхой байна, гэхдээ би үүнийг хэрхэн шийдвэрлэхээ мэдэхгүй байна. руу байршуулсан локал серверкодыг аюулгүйгээр засварлах сайтын хуулбар. Бид бэлтгэл хийнэ.

3. JavaScript-г багасгахалдааны дундаж түвшин юм. Алдаа засах нь сайтыг бага зэрэг хурдасгах болно.
JavaScript кодын шахалт нь ачаалах, боловсруулах, гүйцэтгэх ажиллагааг хурдасгахын тулд өгөгдлийн хэмжээг багасгах боломжийг олгодог.
Дараах эх сурвалжууд дээрх JavaScript кодыг багасгаж, хэмжээг нь 19.4 KB (46%)-аар багасгана уу.
https://prostolinux.ru/wp-content/themes/rockwell_new/rockwell/js/jquery-1.3.2.min.js-ийг богиносгосноор хэмжээ нь 14 КБ (41%)-аар багасна.
https://prostolinux.ru/wp-content/themes/rockwell_new/rockwell/js/jquery.form.js-ийг богиносгосноор хэмжээ 5.4 КБ (64%)-аар багасна.
4. Зургийг оновчтой болгох - энэ бол алдааны дундаж түвшин юм. Алдаа засах нь сайтыг бага зэрэг хурдасгах болно.

Зургийн зөв формат, шахалт нь тэдний хэмжээг багасгаж чадна.

Дараах зургуудын хэмжээг 5 KB (14%)-аар багасгахын тулд тэдгээрийг оновчтой болго.
Хэрэв та зургийг алдагдалгүй шахвал энэ нь түүний хэмжээг 2 КБ (8%)-аар багасгах болно.
Хэрэв та https://prostolinux.ru/wp-content/themes/rockwell_new/rockwell/images/ico_date_orange.png зургийг алдагдалгүй шахвал энэ нь түүний хэмжээг 1.7 КБ (31%)-аар багасгах болно.
Хэрэв та http://avatars-fast.yandex.net/get-direct/nubNH6Z6vqKZZtboVlYcQg/y80 зургийг алдагдалгүй шахвал энэ нь түүний хэмжээг 1.3 КБ (19%)-аар багасгах болно.

5. Серверийн хариу өгөх хугацааг багасгах - энэ нь алдааны дундаж түвшин юм. Алдаа засах нь сайтыг бага зэрэг хурдасгах болно.

Туршилтын үр дүнгээс харахад таны серверийн хариу өгөх хугацаа 0.24 секунд байв. Энэ үзүүлэлтэд олон хүчин зүйл нөлөөлдөг. Манай шилдэг туршлагуудыг уншаад хариу өгөх хугацааг хэрхэн хянаж, хэмжиж болох талаар олж мэдээрэй.

Би тийм ч их биш гэж бодсон, гэхдээ энэ нь байршуулах асуудал юм шиг санагдаж байна, та тэндээс олж мэдэх хэрэгтэй.
6. HTML-г багасгахалдааны дундаж түвшин юм. Алдаа засах нь сайтыг бага зэрэг хурдасгах болно.
HTML кодыг (inline JavaScript эсвэл CSS кодыг оруулаад) шахах нь ачаалах, боловсруулалтыг хурдасгахын тулд өгөгдлийн хэмжээг бууруулдаг.

Хэмжээг нь 1.7 KB (8%)-аар багасгахын тулд дараах нөөцийн HTML кодыг багасгана уу.
https://prostolinux.ru/kak-usilit-signal-3g-modema/-г багасгаснаар хэмжээ 1.7 KB (8%)-аар багасна.

Гар утасны хувьд:

Энд бүх алдаа ижил, гэхдээ ялгаа нь ТЭД БҮГДИЙГ ШҮҮМЖЛЭГЧ ГЭЖ ТОДОРХОЙЛГОЖ БАЙНА!

Энэ нь юу гэсэн үг вэ? Энэ нь сайтыг ачаалах үед гэсэн үг юм гар утас, Интернет суваг ихэвчлэн аль хэдийн байдаг тул бүх зүйл илүү хурдан байх ёстой.

Тийм ээ, Google надад эдгээр алдааг хаана харуулсныг би хэлээгүй. Тэгээд тэр надад Google Adsense самбар дээр үзүүлсэн. Эсвэл та зүгээр л https://developers.google.com/speed/pagespeed/insights/ руу орж, юу засах хэрэгтэйг олж мэдэх боломжтой, учир нь сайт дээрх кодыг оновчтой болгох нь тийм ч хялбар биш, гэхдээ та зөвхөн хийх хэрэгтэй. нэг удаа.

Хэрэв та ядаж зарим асуудлыг хэрхэн шийдвэрлэхээ мэддэг бол таны зөвлөгөөнд би маш их талархах болно. Энэ хооронд би эдгээр чухал асуултуудын хариултыг хайж интернетээр хайх болно ....

Шийдэл.

1. Шахалтыг асаана уу.

Зарим сайжруулалтыг нэн даруй хийх боломжтой болгосон хамгийн эхний зүйл бол файлд код нэмэх явдал байв. htaccess, энэ нь сайтын үндэс дээр байрладаг.

SetOutputFilter DEFLATE толгой хэсэгт Vary User-Agent хавсаргана FileETag MTtime Хэмжээ ExpiresActive дээр ExpiresDefault "хандах эрхтэй нэмэх 1 сар" SetOutputFilter DEFLATE

Миний ойлгож байгаагаар энэ бүхэн сервер тал дээр өгөгдлийг шахах боломжийг олгодог. Би энэ тухай өмнө нь бичиж байсан, тэр байтугай кодыг нь нийтэлсэн боловч үүн дээр хэд хэдэн тохиргоог нэмж оруулсан нь гүйцэтгэлийг сайжруулсан.
2. Шаардлагагүй скриптүүдийг устгана уу.

Хуудасны шинжилгээ нь зарим загварын скриптүүд хуудсыг ачаалахад саад учруулж байгааг харуулсан. Header.php-с дараах маягтын хэд хэдэн скриптийг устгасан:

Устгасны дараа сайт аль аль нь ажиллаж, ажиллаж байсан тул тэдэнд хэрэгтэй байсан бөгөөд ойлгохгүй байна. Google тестийг нэг нэгээр нь харуулсан, би устгаад шалгасан. Нэгийг арилгасны дараа дараагийнх нь гарч ирэв. Тиймээс би 4-5 ширхэгийг хасч, бүх зүйл сайхан байна.

Мөн үр ашгийг дээшлүүлэх. Оновчлолын зорилгод кодын хэмжээ, програмын ашигладаг RAM-ийн хэмжээг багасгах, програмыг хурдасгах, оролт гаралтын үйлдлүүдийн тоог багасгах зэрэг орно.

Оновчлолын аргад тавигддаг гол шаардлага бол оновчлогдсон програм нь оновчгүй програмтай ижил төрлийн оролтын өгөгдөлд ижил үр дүн, гаж нөлөө үзүүлэх ёстой. Гэсэн хэдий ч, оновчлолын ашиглалтаас олох ашиг нь програмын зан төлөвийг өөрчлөх үр дагавраас илүү чухал гэж үзвэл энэ шаардлага онцгой үүрэг гүйцэтгэхгүй байж магадгүй юм.

Оновчлолын төрлүүд

Кодын оновчлолыг гараар, программист болон автоматаар хийж болно. Сүүлчийн тохиолдолд оновчлогч нь тусдаа програм хангамжийн хэрэгсэл эсвэл хөрвүүлэгчид (оновчлох хөрвүүлэгч гэж нэрлэгддэг) суурилагдсан байж болно. Нэмж дурдахад орчин үеийн процессорууд кодын зааварчилгааг гүйцэтгэх дарааллыг оновчтой болгож чадна гэдгийг тэмдэглэх нь зүйтэй.

Дээд түвшний, доод түвшний оновчлол гэх мэт ойлголтууд байдаг. Өндөр түвшний оновчлолыг ихэвчлэн хийсвэр объектуудтай (функц, процедур, ангиуд гэх мэт) ажиллуулж, асуудлыг шийдвэрлэх ерөнхий загварыг төсөөлж, системийн дизайныг оновчтой болгож чаддаг програмист хийдэг. Эх кодын анхан шатны бүтцийн блокуудын түвшинд (гогцоо, салбар гэх мэт) оновчлолыг ихэвчлэн өндөр түвшин гэж нэрлэдэг; зарим нь тэдгээрийг тусдаа (“дунд”) түвшин гэж ялгадаг (Н. Вирт?). Доод түвшний оновчлол нь эх кодыг машины зааврын багц болгон хувиргах үе шатанд хийгддэг бөгөөд энэ үе шат нь ихэвчлэн автоматжуулалтад хамрагддаг. Гэсэн хэдий ч ассемблер хэлний програмистууд энэ тал дээр ямар ч машин сайн програмистыг гүйцэж чадахгүй гэж үздэг (харин муу програмист машиныг улам дордуулна гэдэгтэй бүгд санал нийлдэг).

Оновчлох талбайг сонгох

Кодыг гараар оновчтой болгоход өөр нэг асуудал гардаг: та зөвхөн хэрхэн оновчтой болгох талаар төдийгүй хаана хэрэглэхээ мэдэх хэрэгтэй. Ихэвчлэн янз бүрийн хүчин зүйлээс шалтгаалан (оролтын ажиллагаа удаашрал, хүний ​​​​оператор ба машины хурдны ялгаа гэх мэт) кодын ердөө 10% нь гүйцэтгэлийн хугацааны 90% -ийг авдаг (мэдээжийн хэрэг, мэдэгдэл нь арай илүү юм. таамаглалтай, мөн хуулийн хэлбэрээр эргэлзээтэй үндэслэлтэй Парето хэдий ч Э.Таненбаумд нэлээд үнэмшилтэй харагдаж байна). Оновчлолд нэмэлт цаг зарцуулах шаардлагатай тул програмыг бүхэлд нь оновчтой болгохын оронд эдгээр "чухал" 10% гүйцэтгэлийг оновчтой болгох нь дээр. Ийм кодыг бөглөрөл эсвэл бөглөрөл гэж нэрлэдэг бөгөөд үүнийг тодорхойлохын тулд програмын янз бүрийн хэсгүүдийн цагийг хэмжих боломжийг олгодог тусгай программуудыг ашигладаг.

Үнэн хэрэгтээ практик дээр оновчлолыг ихэвчлэн "эмх замбараагүй" програмчлалын үе шат ("", "бид үүнийг дараа нь ойлгох болно", "ямар ч байсан хийх болно" гэх мэт) дараа хийдэг тул энэ нь зөв холимог юм. оновчлол, дахин засварлах, засах: strlen(path.c_str()), логикийн нөхцөл (a.x != 0 && a.x != 0) гэх мэт "хөөрхөн" бүтцийг хялбаршуулах. Профайлагчид ийм оновчтой болгоход бараг тохиромжгүй байдаг. Гэсэн хэдий ч ийм газруудыг илрүүлэхийн тулд та програмуудыг ашиглаж болно - эх кодын гүн гүнзгий дүн шинжилгээнд үндэслэн семантик алдааг олох хэрэгсэл - эцэст нь хоёр дахь жишээнээс харахад үр ашиггүй код нь алдааны үр дүн байж болно (жишээ нь: Энэ жишээн дэх үсгийн алдаа - хамгийн их магадлалтай, a.x != 0 && a.y != 0). Сайн код нь ийм кодыг илрүүлж, анхааруулах мессежийг харуулах болно.

Оновчлолын хор хөнөөл, ашиг тус

Програмчлалын бараг бүх зүйлийг оновчтой авч үзэх ёстой бөгөөд оновчлол нь үл хамаарах зүйл биш юм. Туршлагагүй ассемблер програмист ихэвчлэн хөрвүүлэгчийн үүсгэсэн кодоос (Зубков) 3-5 дахин удаан код бичдэг гэж үздэг. Эрт, нэлээд доогуур түвшний (нэмэлт оператор эсвэл хувьсагчийн төлөөх тэмцэл гэх мэт) оновчлолын талаар сайн мэддэг хэллэг байдаг бөгөөд үүнийг Кнутын томъёолсон: "Эрт оновчлол бол бүх бэрхшээлийн үндэс юм."

Ихэнх хүмүүс оновчлогчийн хийсэн оновчлолын талаар гомдоллодоггүй бөгөөд заримдаа зарим оновчлолууд нь бараг стандарт бөгөөд заавал байх ёстой - жишээлбэл, функциональ хэл дээрх сүүлний рекурсын оновчлол (Сүүлийн рекурс нь тодорхой төрлийн рекурс бөгөөд үүнийг багасгаж болно. мөчлөгийн хэлбэр).

Гэсэн хэдий ч машины кодын түвшинд олон тооны нарийн төвөгтэй оновчлолууд нь эмхэтгэлийн үйл явцыг ихээхэн удаашруулж чадна гэдгийг ойлгох хэрэгтэй. Түүнээс гадна, тэдгээрийн ашиг нь системийн ерөнхий дизайныг (Wirth) оновчтой болгохтой харьцуулахад маш бага байж болно. Түүнчлэн орчин үеийн, синтаксик, семантикийн хувьд "хөгжилтэй" хэлүүд нь олон нарийн шинж чанартай байдаг тул тэдгээрийг үл тоомсорлодог програмистууд оновчлолын үр дагаварт гайхаж магадгүй гэдгийг мартаж болохгүй.

Жишээ нь, C++ хэл болон гэж нэрлэгддэг хэлийг авч үзье. Буцаах утгыг оновчлох, түүний мөн чанар нь хөрвүүлэгч нь функцээр буцаасан түр зуурын объектын хуулбарыг үүсгэхгүй байх явдал юм. Энэ тохиолдолд хөрвүүлэгч хуулбарыг "алгасан" тул энэ заль мэхийг мөн "Copy elision" гэж нэрлэдэг. Тиймээс дараах код:

#оруулна struct C ( C() () C(const C&) ( std::cout<< "A copy was made.\n"; } }; C f() { return C(); } int main() { std::cout << "Hello World!\n"; C obj = f(); }

хэд хэдэн гаралтын сонголттой байж болно:

сайн уу ертөнц! Хуулбар хийсэн. Хуулбар хийсэн. сайн уу ертөнц! Хуулбар хийсэн. сайн уу ертөнц!

Хачирхалтай нь, уг гурван сонголт бүгд хууль ёсны бөгөөд хэлний стандарт нь тухайн бүтээгчид гаж нөлөө үзүүлсэн ч хуулбар үүсгэгчийн дуудлагыг орхигдуулахыг зөвшөөрдөг (§12.8 Ангийн объектуудыг хуулах, 15-р зүйл).

Үр дүн

Тиймээс, боломжтой бол тусгай програм хангамжийн хэрэгслийг ашиглан кодыг оновчтой болгохоо бүү мартаарай, гэхдээ үүнийг болгоомжтой, болгоомжтой хийх хэрэгтэй бөгөөд заримдаа хөрвүүлэгчээс гэнэтийн зүйлд бэлдэх хэрэгтэй.

PVS Studio

Ном зүйн жагсаалт

  • Э.Таненбаум. Компьютерийн архитектур.
  • Wirth N. Барилгын эмхэтгэгчид.
  • Knut D. Програмчлалын урлаг, 1-р боть. Үндсэн алгоритмууд.
  • Зубков С.В. DOS, Windows болон UNIX-д зориулсан ассемблер.
  • Википедиа. кодын оновчлол.
  • Википедиа.

Сайт болон түүн дээр байрлуулсан контентыг ачаалах процессыг хурдасгахын тулд HTML код болон каскадын загварын хүснэгтийг (CSS) оновчтой болгох шаардлагатай. Цаг хугацаа, замын хөдөлгөөний хэмнэлт, ерөнхийдөө оновчлолын дараа удаан хугацааны дараа хурдны өөрчлөлт нь гаднаас тийм ч мэдэгдэхүйц биш байсан ч мэдэгдэхүйц байх болно.

HTML кодын оновчлол

HTML код нь сайтыг хурдан ачаалахад хувь нэмэр оруулахын тулд хэд хэдэн нөхцлийг хангасан байх ёстой.

  • Энгийн бөгөөд мэдээлэл сайтай бай. Үүнийг хүчинтэй эсэхийг шалгасны дараа та алдааг засах хэрэгтэй бөгөөд ингэснээр роботууд үүнийг шинжлэхэд хялбар болно. Код нь хуудасны бүтцийг тодорхой илэрхийлэх ёстой.
  • Гарчиг, индекс, мэдээллийн блок зэрэг хуудасны үндсэн бүрэлдэхүүн хэсгүүдийг хялбар бөгөөд хурдан тодорхойлох ёстой.
  • Кодыг шаардлагагүй мэдээллээс чөлөөлж, тусдаа файлд оруулах нь (жишээлбэл, та CSS болон JS-г тавьж болно) татаж авах хурдыг нэмэгдүүлэх бөгөөд энэ нь роботуудын ажлыг хялбаршуулдаг.

Эдгээр нөхцлийг биелүүлснээр сайтыг илүү хурдан, илүү тохиромжтой болгож, хайлтын системийн ботоор индексжүүлэх үр ашгийг нэмэгдүүлэх боломжтой.

Кодыг багасгах, CSS оновчтой болгох

Та сайтын кодын эзлэхүүнийг багасгах замаар илүү хялбар болгох боломжтой. Үүнийг хийхийн тулд та хэд хэдэн үйлдлийг гүйцэтгэх хэрэгтэй.

Юуны өмнө та флаш технологи, JavaScript, жааз, зургаар илэрхийлсэн текстээс зайлсхийх хэрэгтэй. Боломжтой бол бүх элементүүдийг тусад нь, гадаад файлуудад (жишээ нь, дээр дурдсанчлан CSS болон JS) дүрсэлсэн байх ёстой. Тусгай залгаасууд кодыг оновчтой болгоход тусална. Жишээлбэл, та HTML, CSS, JS кодыг автоматаар оновчтой болгодог Autoptimize залгаасыг суулгаж болно (хэрэв та тохирох нүдийг сонговол). Хэрэглэгчдэд ойлгомжтой, хайлтын системд зөв танигдсан чадварлаг, тохиромжтой сайтын навигацийг бий болгох шаардлагатай. Энэ нь сайтыг ачаалах, индексжүүлэх хурд, чанарыг нэмэгдүүлэх болно.

CSS-ийн оновчлолын хувьд та үүнийг өөрөө хийх эсвэл тусгай нөөц эсвэл програмд ​​даатгаж болно. Гараар оновчтой болгох нь цаг хугацаа шаардсан, цаг хугацаа шаардсан үйл явц бөгөөд үүнээс гадна та зарим алдааг алдаж болно. Оновчлолд зориулсан програм эсвэл үйлчилгээ нь дутагдлыг арилгах болно, гэхдээ сайт дээр ажиллаж байсан зарим функцийг тасалдуулж, контентыг шалгасны дараа зөв харагдахгүй байж болзошгүй тул тэдгээрийн ажлыг засах шаардлагатай.

CSS бүтцийг гараар сайжруулах зарим арга замууд:

  • CSS файлыг хэт ачаалж, роботуудын ажиллахад хүндрэл учруулдаг нэмэлт зай, мөрийн завсарлагыг арилгах;
  • Ижил төстэй командуудыг хэд хэдэн удаа давтахын оронд ерөнхий шинж чанарыг бичих;
  • Сэтгэгдэл бичихдээ товч, ойлгомжтой тайлбарыг ашиглах;
  • Зураг биш харин хэв маягийг ашиглан ер бусын фонт бичих;
  • Зургийн хувьд alt болон гарчиг (зураг бүрийн хувьд өөр) үүсгэснээр тэдгээрийн агуулгыг хайлтын системийн роботууд таних болно;
  • Индексжүүлэх явцад тэдгээрийг зөв танихын тулд гарчигуудад H1 хэрэгслийг ашиглах гэх мэт;
  • Түлхүүр үгэнд зөвхөн хуудсан дээр ашиглагдаж буй түлхүүр үгсийг зааж өгөх, тэдгээрийн тоог багасгах;
  • Төрөл бүрийн, товч мета шошгуудыг ашигла.

CSS болон HTML оновчтой болгох

Та тусгай үйлчилгээг ашиглан хөтөч дээр шууд оновчтой бөгөөд хурдан хийх боломжтой, жишээлбэл:

  • CleanCSS.com;
  • CSS оновчтой болгох;
  • CSS компрессор
  • CYPR.com;
  • залгаасыг автоматаар оновчтой болгох.

SEO болон мэдээллийн технологийн мэргэжилтнүүд CleanCSS.com сайтыг ашиглахыг зөвлөж байна, учир нь энэ нь шахалтын түвшинг багааас өндөр хүртэл сонгох эсвэл хувийн тохиргоог сонгох боломжийг олгодог. Өндөр, дээд түвшний оновчлолын дараа сайтын код бараг унших боломжгүй болж, түүнд өөрчлөлт оруулах бараг боломжгүй болно. Тиймээс эхлээд стандарт оновчлолыг ашиглах хэрэгтэй. Та тодорхой агуулгын хувьд шахалтын горимыг сонгох эсвэл бие даасан параметрүүдийг оновчтой болгох боломжтой: фонт, зураг шахах, хоосон зайг арилгах.

CY-PR.com сайт нь CSS-ийн бүтцийг 25-30% хөнгөвчлөх ижил төстэй оновчлолын хэрэгсэлтэй боловч үйлдлийн дараа кодын файл үүсгэх арга байхгүй.

Бусад үйлчилгээнүүд кодыг эрс өөрчилж, сайт дээрх зарим функцууд ажиллахаа болино. Тиймээс тэдний тусламжтайгаар сайтын тодорхой параметрүүдэд зөвхөн орон нутгийн өөрчлөлтийг хийх нь дээр.

Оновчлолын дараа та сайтын гүйцэтгэл, дизайны зөв харагдах байдал, татаж авах хурд зэргийг шалгах хэрэгтэй. Сайтын хуудсууд болон хэрэглэгчийн сонголтуудыг 3-5 секундээс илүүгүй хугацаанд ачаалах нөхцөл байдал хэвийн байна.

Оновчлолын түвшинг шалгаж, HTML код хэр үр дүнтэй бичигдсэнийг ойлгохын тулд та дараах үйлчилгээг ашиглаж болно.

  • optimization.com;
  • Порталын SEO шалгах хуудас;
  • firebug залгаас.

Эдгээр хэрэгслүүд нь HTML кодын хэмжээг багасгах, бүтцийг сайжруулахын тулд бүх зүйл хийгдсэн эсэхийг шалгахад тусална. SEO шалгах хуудасны нөөц дээр та оновчлолын хувьд аль хэдийн хийгдсэн, хараахан хийгдээгүй байгаа зүйлсийн жагсаалтыг шалгаж, дууссан ажлуудад тэмдэг тавьж болно.

Баталгаажуулалт

Та validation check services - validators ашиглан сайтын кодыг алдааг шалгаж болно. Кодын үр дүнтэй баталгаажуулалтыг validator.w3c.org ашиглан хийдэг

Хэрэв систем эхний шалгалтын явцад хагас мянга гаруй алдаа гаргасан бол та бухимдах ёсгүй. Тодорхой согогийг зассаны дараа та шалгалтыг дахин хийж болно, нэг согог нь бусадтай холбоотой тул алдаа бага байх болно, үүнийг зассаны дараа тэд алга болно.

Засварласан, оновчтой кодтой сайт нь алдаа агуулсан хэт ачаалалтай HTML кодтой эх сурвалжаас илүү хайлтын үр дүнд дээгүүр байр эзэлдэг.

Кодын оновчлолүр ашгийг нэмэгдүүлэхэд чиглэсэн зөв кодыг өөрчлөх гэж нэрлэдэг. "Оновчлол" гэдэг нь нэг анги, нэг арга, ихэнхдээ хэд хэдэн мөр кодын мөрөнд нөлөөлөх жижиг өөрчлөлтүүдийг хийхийг хэлнэ. Том хэмжээний дизайны өөрчлөлт эсвэл бусад өндөр түвшний гүйцэтгэлийн сайжруулалтыг оновчлол гэж үзэхгүй. Энэ нь гүйцэтгэлийг сайжруулах хамгийн үр дүнтэй арга биш юм. Хөтөлбөрийн архитектурыг сайжруулах, ангиудыг дахин төлөвлөх, илүү үр дүнтэй алгоритмыг сонгох нь илүү гайхалтай үр дүнд хүргэдэг. Нэмж дурдахад, кодын оновчлол нь гүйцэтгэлийг сайжруулах хамгийн хялбар арга биш юм: шинэ техник хангамж эсвэл сайжруулсан оновчлолын модуль бүхий хөрвүүлэгч худалдаж авах нь илүү хялбар байдаг. Эцэст нь, энэ нь гүйцэтгэлийг сайжруулах хамгийн хямд арга биш юм: эхлээд кодыг гараар оновчтой болгоход маш их цаг зарцуулдаг бөгөөд дараа нь оновчтой кодыг хадгалахад илүү хэцүү байдаг.

Програмистаар хийсэн оновчлол.

1). Нэмэлт мэдээлэл нэмэх замаар өгөгдлийн бүтцийг өргөтгөх эсвэл энэ бүтэц дэх өгөгдлийн дүрслэлийг өөрчлөх. 2). Үр дүнг урьдчилан тооцоолж, дараа нь ашиглахаар хадгал. 3) . Өгөгдлийн багцын хэрэглээ. 4) . Дотоод гогцоо нь хамгийн бага боломжит тооны шалгалтыг агуулж байх ёстой бөгөөд хамгийн сайн нь зөвхөн нэг юм. 5) . Болзолгүй үсрэлтийг арилгах. 6) . Логикийн шалгалтыг зөв байх магадлал багатай илүү удаан нөхцлөөс өмнө зөв байх магадлалтай хурдан нөхцлүүд ирэхээр зохион байгуулах ёстой. 7). Анхны утгуудын жижиг багц дээрх логик функцийг энэ багцыг харуулсан хүснэгтээр сольж болно. 8). Давхардсан илэрхийллийг арилгах. 9). Хэрэв хоёр ба түүнээс дээш ижил илэрхийллийг ихэвчлэн дараалан үнэлдэг бол тэдгээрийг дэд програм руу шилжүүлэх хэрэгтэй. 10) . Өгөгдлийн төрлийг өөрчлөхкодыг багасгах, гүйцэтгэлийг сайжруулах үр дүнтэй арга байж болно. 11) . Доод түвшний хэлээр кодыг дахин бичих.Хэрэв гүйцэтгэл бага байвал кодыг доод түвшний хэлээр дахин бичих хэрэгтэй. Хэрэв та C++ хэл дээр бичиж байгаа бол доод түвшний хэл нь Assembler байж болно. Доод түвшний хэлээр кодыг дахин бичих нь кодын гүйцэтгэлд эерэг нөлөө үзүүлдэг.

Хөрвүүлэгчийн оновчлол.

Кодын оновчлолын аргуудыг синтаксик бүтцийн янз бүрийн түвшинд хэрэглэж болно. 1 ). операторын түвшинд - ихэнх хөрвүүлэгчид энэ түвшинд зарим оновчлолыг хийдэг. 2 ). блокийн түвшинд - оновчтой болгох хөрвүүлэгч нь программын чиглэсэн урсгалын графикийг байгуулах замаар үйлдлийн бүтцийг программд хуваарилдаг бөгөөд орой бүр нь үндсэн блокыг, оройнуудын хоорондох холбоосууд нь хяналтын урсгалыг илэрхийлдэг. Ихэнх хөрвүүлэгчид блокийн түвшинд оновчлолыг гүйцэтгэдэг. 3 ). мөчлөгийн түвшинд. 4 ). хөтөлбөрийн түвшинд - оновчтой болгох хамгийн хэцүү түвшин.

Оновчлолын түвшин өндөр байх тусам програмын модулийн хурдыг нэмэгдүүлэх боломж нэмэгдэнэ. Гэсэн хэдий ч илүү их хэмжээний оновчлолыг ашиглах зардал нь эмхэтгэлийн хугацааг ихээхэн нэмэгдүүлэх болно.

42. Хөтөлбөрийн дизайн: үндсэн санаа.

1) Хэрэгжилтийн тодорхойлолт (хэл, програмчлалын орчин, туршилт, төлөвлөсөн гүйцэтгэл):

байт, үйлдэл, мөр дэх хэмжээ;

өгөгдөлд шаардагдах санах ойн хэмжээ;

Шаардлагатай техникийн нөөц.

2) Дэд програм руу нэвтрэх (оролтын параметр дамжуулах тоо, төрөл, дараалал): дамжуулах арга (лавлагаа эсвэл утгаараа).

3) Буцаагдсан параметрүүдийн тайлбар:

функц өөрөө буцаасан параметр;

функцийн өөрчилдөг оролтын параметрүүдийн тайлбар.

4) Онцгой нөхцөл байдлын тодорхойлолт, програмын хариу үйлдэл.

5) Хэрэв байгаа бол програмын мессежийн тайлбар.

6) Алгоритмын товч тайлбар:

Хэрэв энэ нь нэртэй бол түүнийг зааж өгнө үү;

эх сурвалжийг нэрлэх эсвэл програмын текстийг хаанаас өгсөн, алгоритмыг хаанаас авсан;

Та блок диаграммыг өгч болно.

8) Бүх оролт, гаралтын файлууд болон тэдгээрийн агуулгын товч хураангуйг тайлбарлана уу.

9) Бүх файлын бичлэгийн бүтцийг жагсаана уу:

Бичлэгийн талбараар задаргаа;



Ачааж байна...
Топ