Metro stacija-vadība

Es izmantoju NanoBlogger, lai ģenerētu vietni, kas pilnībā sastāv no statiskiem failiem - bez PHP vai līdzīga.

Es vēlētos, lai vietne tiktu pakļauta versijas kontrolei, kas nozīmē gan NanoBlogger datu failu, gan citu neveidotu failu (stilu lapas, attēli un vēl kas cits), kas veido vietni, pārvaldīšanu ar vienu vai otru pārskatīšanas vadības sistēmu. Es arī vēlētos automatizēt vietnes izvietošanu no RCS.

Es atklāju, ka neviena no mūsdienu pārskatīšanas vadības sistēmām (git, Subversion un Mercurial) nesaglabā laika zīmogus pārvaldītajos failos. Tas nozīmē, ka izvietošanas skripts serverī, kas pārbauda jaunu repozitorija kopiju un kopē failus uz tīmekļa servera publisko mapi, galu galā atiestatīs katra faila laika zīmogu, pat tādas lietas kā attēli, kas nav mainīti. Tas iznīcina visus mēģinājumus efektīvi izmantot kešatmiņu un galu galā tērē lietotāju laiku un joslas platumu.

Tāpēc mans jautājums ir: kādus rīkus un darbplūsmu cilvēki faktiski izmanto statisko vietņu versijai un izvietošanai? Konkrēti, kā jūs apiet laika zīmoga problēmu? Vai jūs

  • vienkārši glabājiet servera "pastāvīgu" reģistrāciju kasē, kas tiek atjaunināts pirms katras izvietošanas (iespējams, slikta prakse),

  • izmantojiet "klasisko" RCS, piemēram, CVS, kas saglabā laika zīmogus, vai

  • ignorēt problēmu un pieņemt mazliet joslas platumu tiks izšķiesti?

Vai arī to vietā ir kāda cita veida sistēma vai darbplūsma?

(Informācijas par pārskatīšanas vadības izmantošanas mehānismu tīmekļa vietnē netrūkst, taču es vēl neesmu redzējis, ka kāds būtu pievērsis uzmanību laika zīmoga problēmai vai īpaši runājis par statiskām vietnēm.)

  • Kāpēc katru reizi pārbaudīt visu repo versiju? Kad esat izveidojis projektu zem vcs, vienkārši veiciet atjaunināšanu un iegūstiet tikai mainītos failus. Kā Heroku to dara? Es domāju, ka tas darbojas tikai tad, ja jūs varat izvairīties no kopijas un serverī ievietot vcs dir, kur jums tas nepieciešams.
  • Katru reizi pārbaudot jaunu kopiju, motivācija ir pārliecināties, ka vienmēr ir izvietots viss precīzi kas aktuāls krātuvē. Lielākoties tas attiecas uz noteikuma izpildi, ka nevajadzētu izvietot neko tādu, kas vispirms nav pārbaudīts un pēc tam droši saglabāts RCS.

Nevienā VCS nav metadatu laika zīmoga, pat dažos ir iekļauti atļaujas biti. Es domāju, ka tas ir tāpēc, ka, kad VCS izseko faila saturu, pēdējais modificētais laiks nav saskaņots. Piem., kad kāds modificē failu, pēc tam atsauc, mainās pēdējais modificētais laiks, taču šim failam vajadzētu saglabāt to pašu versiju.

BTW, Subversion ir iespēja use-commit-times izmantot apņemšanās laiku kā faila laika zīmogu. Tādējādi tas varētu mazliet palīdzēt.

  • Tam vajadzētu diezgan daudz atrisināt problēmu, ja viņš izmanto SVN. Alternatīvi viņš varētu izmantot pārskatīšanas numuru ETags un vienkārši atspējot last-modified galveni, kas arī atrisinātu problēmu.
  • Vienkārši gribu piebilst, ka, lai atrisinātu OP problēmu, mēs vienkārši ignorēsim pēdējo modificēto. Tā nav īsta problēma. Vai jums ir vienalga par laiku vai joslas platumu, jo tie ir ļoti lēti, un modifikācijas laiks bieži nemainās, vai ne?
  • Ja viņš neveiks nevienu atcelšanu, viņam tas nebūs jānomāc last-modified galveni, un tas darbosies perfekti (tikai izmantojot joslas platumu, kad ir izdarīta jauna saistība). Tomēr, ja viņš dara veiciet jebkādas atcelšanas, tad fails būs mainījies, bet pārlūkprogramma to vairs neizgūs, jo last-modified tiks noteikts vēl tālāk, nekā tas bija iepriekš. Tas būtu problemātiski. Šeit ETags varētu būt labāks risinājums.
  • Paldies puiši. Subversion izmantošana ar use-commit-times karogs šeit izklausās kā labākais risinājums. (Tomēr es jau esmu sācis izmantot CVS un, iespējams, paliks pie tā; pagaidām tas ir pietiekami labs, izmanto laika zīmogus, kā es domāju, ka RCS vajadzētu, un tā priekšrocība, ka serverī nav nepieciešama papildu programmatūra.) ETags izmantošana būtu gudrs risinājums, izņemot to, ka nginx tos neatbalsta (labi), kas, šķiet, parasti ir labākais risinājums statisko vietņu apkalpošanai.

strādāja par jums: Charles Robertson | Vēlies ar mums sazināties?